我測試在我AngularJs應用兩種不同的HTTP調用。
有一種奇怪的行爲。如果我分別測試每一個,其他臨時註釋(在控制器和測試中),每一個工作正常,測試通過。
但是,如果我跑因果報應的時候有兩個測試,他們失敗了,給了以下錯誤消息:
Unexpected request: GET https://MY_DOMAIN_2.com/list_project
No more request expected
控制器:
.controller('TestController', function($scope, $http, $timeout) {
$scope.getLanguageList = function()
{
$http.get('http://MY_DOMAIN_1.org/languageList').then(function(resp)
{
$scope.language_list = resp.data;
},
function(err)
{
$scope.language_list = [];
})
}
$scope.language_list = [];
$scope.getLanguageList();
$scope.get_project_list = function()
{
$http.get('https://MY_DOMAIN_2.com/projectList').then(function(resp)
{
$scope.project_list = resp.data;
},
function(err)
{
$scope.project_list = [];
})
}
$scope.project_list = [];
$scope.get_project_list();
})
的測試:
describe('Http requests tests', function() {
beforeEach(module('my_app.controllers'));
var $controller;
var $httpBackend;
var $scope;
var $timeout;
describe('Lists test', function()
{
beforeEach(angular.mock.http.init);
afterEach(angular.mock.http.reset);
beforeEach(inject(function(_$controller_, _$httpBackend_)
{
$controller = _$controller_;
$scope = {};
$httpBackend = _$httpBackend_;
}));
it('should load default language list', function (done)
{
$httpBackend.whenGET('http://MY_DOMAIN_1.org/languageList').passThrough();
var TestController = $controller('TestController', { $scope: $scope });
setTimeout(function()
{
expect($scope.language_list).not.toEqual([]);
done();
}, 1000);
});
it('should load default project list', function (done)
{
$httpBackend.whenGET('https://MY_DOMAIN_2.org/projectList').passThrough();
var TestController = $controller('TestController', { $scope: $scope });
setTimeout(function()
{
expect($scope.project_list).not.toEqual([]);
done();
}, 1000);
});
});
});
問題:
爲什麼我得到那個錯誤信息? 代碼應該沒問題,因爲他們分開工作正常。我錯過了什麼嗎?
謝謝!
如果你有什麼改變了你的$範圍= {}至$範圍= $ rootScope。$新的()? –
已經嘗試過但沒有任何改變。 – johnnyfittizio