0
我在我的控制器以下功能:
function putActivities() {
var promises = [];
view.activities.forEach(function (activity) {
promises.push(API.putActivities({activity: activity}).$promise);
});
$q.all(promises).then(function() {
view.finished = true;
});
}
,其中API是$資源。這種方法是通過下面的代碼片段測試:
describe('putActivities', function() {
beforeEach(function() {
view.activities = ['hello'];
spyOn(API, 'putActivities').and.callFake(function() {
return {
$promise: q(function() {})
}
});
});
it('view is finished after putting activities', function() {
view.putActivities();
expect(view.finished).toEqual(true);
});
});
出於某種原因,$ q.all從未解析和view.finished
永遠不會設置爲true。有誰知道爲什麼會發生這種情況,以及我如何解決這個問題?
我在某個時候嘗試了這一點 - 但沒有繼續這個,因爲它給了我另一個異常,'錯誤:意外的請求:GET http:// localhost/api/endpoint。沒有更多的預期要求。在控制器的init方法中有一個不同的API調用,它必須由$ rootScope。$ apply調用(它也出現在$ rootScope。$ digest中)。我試圖監視其他端點,但沒有解決錯誤。 – cscan
您需要通過'$ httpBackend'預期請求。請參閱https://docs.angularjs.org/api/ngMock/service/$httpBackend – tasseKATT