2013-10-31 64 views
2

是的,萬一你想知道。與Chrome Apps的CSP限制條件沒有衝突,這也適用於Derick Bailey的Jasmine.Async(https://github.com/derickbailey/jasmine.async)。茉莉花是否適用於Chrome應用程序?

我以正常方式設置測試,對Chrome應用程序環境完全沒有任何不同之處。揭開序幕的測試中,我用這個功能,基於傳統的茉莉花,調用例子:

function jasmine_run() { 
    var jasmineEnv = jasmine.getEnv(); 
    jasmineEnv.updateInterval = 1000; 
    var htmlReporter = new jasmine.HtmlReporter(); 
    jasmineEnv.addReporter(htmlReporter); 
    jasmineEnv.specFilter = function(spec) { 
     return htmlReporter.specFilter(spec); 
    }; 
    jasmineEnv.execute(); 
} 

一個問題我沒有解決,因爲我不關心它,是沒有任何聯繫的在輸出中(用於運行單個測試等)工作,因爲Chrome Apps中沒有導航。但是,這絕不影響測試本身,只是HTML顯示的一個功能。

幾乎一切都值得做的是在我的應用程序異步完成,但Jasmine.Async處理是很清楚,在這個例子中(Facebook的模塊是我自己):

describe('Facebook', 
    function() { 
     var async = new AsyncSpec(this); 
     async.it("authorizes", 
      function(done) { 
       Facebook.authorize(
        function(success) { 
         expect(success).toBeTruthy(); 
         done(); 
        } 
       ); 
      } 
     ); 
     async.it("searches", 
      function(done) { 
       Facebook.call("search?q=" + encodeURIComponent('Adolfo') + 
"&type=user&fields=picture,gender,id,name,updated_time,username", 
        function (result) { 
         expect(result.data.length > 0).toBeTruthy(); 
         expect(result.data[0].username).not.toBeNull(); 
         done(); 
        } 
       ); 
      } 
     ); 
    } 
); 

我沒有檢查查看Jasmine是否適用於Chrome擴展程序,因爲我不寫擴展名。

回答

0

添加一些信息作爲答案,因爲問題已經得到解答。

前段時間我在應用程序開發中使用了Jasmine,並沒有任何問題。然而,我接近它的方式略有不同,這意味着我的輸出確實打開了。

我沒有在正常的應用程序中運行測試,而是創建了一個運行茉莉花測試的測試頁面。由於應用程序的邏輯(由於CSP)與HTML文件分離,這應該始終可行,並且使測試代碼與應用程序邏輯分開更容易。

+0

我不明白爲什麼測試頁面將允許導航工作,除非它是沙箱,這意味着無法訪問Chrome API。我想單元測試的代碼使用這些API。我錯過了什麼嗎? –

+0

好的。我的意思是你在應用程序之外運行頁面(即在瀏覽器中),但是這意味着你不能使用chrome API,你只是測試你的應用程序邏輯。 –