2016-01-06 114 views
0

鑑於角控制器功能測試是一種承諾

this.checkResponse = function (response) { 
    if (response.success === true) { 
    return $q.resolve(response); 
    } else { 
    return $q.reject(response); 
    } 
}; 

我怎麼茉莉測試返回的值是一個承諾?我可以輕鬆地驗證是否在函數內部調用了resolve或reject,或者我收到了jasmine.any(Function),但是如何確保它是一個承諾?

+0

你可能想看看這裏:http://stackoverflow.com/questions/27746304/how-do-i-tell-if-an-object-is-a-promise –

回答

1

我願意做這樣的在我的測試:

//done callback will ensure that success function should called 
it('blabla', function(done){ 
    //when 
    app.checkResponse().then(function(){ 
     done(); 
    }, function(){ 
     fail("error callback has been called"); 
     done(); 
    }); 
}) 

這將確保你有一個承諾要恢復,否則就會失敗,超時。對我而言,這是最快的解決方案。

這是你在找什麼?或者我誤解了你?

+0

是的,它看起來像我可能需要和我也有類似的方法,但由於某種原因,我確信可能會有更優雅的東西。 – Konstantin

+0

我在我的項目中使用這種方法。我不知道更優雅的解決方案。 – Iamisti