2013-04-03 42 views
4

被處決我有角應用這樣的測試:如何確保茉莉的期望()測試

it("should return false if all products loaded", function() { 
    $httpBackend.flush(); 
    scope.loadNextProducts(15).then(function (isThereMoreToLoad) { 
     expect(isThereMoreToLoad).toBe(false); 
    }); 
    scope.$apply(); 
}); 

如果我忘了寫醚$httpBackend.flush();scope.$apply();測試將永遠達不到expect()一部分,測試會成功。

有沒有辦法保證)預期(執行的茉莉測試,如果沒有的話,應該會失敗?

類似於指定it()預計有多少expect(),或告訴茉莉花每個測試應該至少執行一個expect()否則應該失敗。

+0

當然更多的信息。看看這個:https://github.com/pivotal/jasmine/wiki/Asynchronous-specs –

+0

是的,這看起來很有趣,但據我瞭解,這是設置異步測試超時的機制,如果超時已達到,則測試失敗。我在這裏有諾言,我應該以某種方式把它包裝waitsFor?可以工作,但是這會進一步破壞我的測試,因爲它們現在變成了幾個級別的嵌套函數。 –

回答

0

試試這個:

afterEach(function() { 
    $httpBackend.verifyNoOutstandingExpectation(); 
    $httpBackend.verifyNoOutstandingRequest(); 
    }); 

這應該,那麼,請確認您的測試有沒有尚未被訪問的預期,這也應該確認所有預期服務器的呼叫已被調用。

您可以找到Angular $backend docs

+1

按照我的理解,這將解決部分「如果我忘了寫$ httpBackend.flush();」。什麼部分或者「如果我忘了寫範圍$適用();」? –