我正在使用HttpBackend来模拟我的Angular应用程序正在进行的一些调用的一些Http响应。
但是,当我运行测试时,我收到错误“意外请求:[object Object] undefined”。
我知道通常这个错误意味着您丢失或错误输入了应用程序发出的$ http请求之一,因此无法找到响应。但我的错误并不像其他通常所说的那样具体,比如“Unexpected Request:GET api / call”所以我不知道出了什么问题。
之前有没有人遇到过这个特定的错误?
示例代码
角度控制器:
app.controller( 'ctrl',
[ '$scope' , '$http' , '$location', function( $scope, $http, $location ) {
$http.get(
"/api/1.0/id/" + id,
{
headers: getAuthHeaders()
}
).success(function( data ){ //... })]
);
茉莉花测试:
it('should ...', function(){
httpBackend.whenGET('/api/1.0/id/*').respond(200,{"test":"Test"});
//...
});
答案 0 :(得分:0)
我尝试了你的代码并自己测试。我添加了一个设置ID的函数,但我认为你有类似的东西:
//PRESET ID
var id = 'deajedgwe1e213df';
//FUNCTION TO CAPSULATE API CALL
this.callApi = function () {
http.get(
"/api/1.0/id/" + id,
{
//headers: getAuthHeaders()
}
).success(function( data ){
console.log('success', data);
}).error(function (err) {
console.log('error', err);
});
};
//FUNCTION TO SET ID
this.setId = function (ID) {
id = ID;
};
然后我复制了你的测试并将其修改为:
it('should ...', function(){
ctrl.setId('test123ID');
httpBackend.expectGET('/api/1.0/id/test123ID').respond(200,{"test":"Test"});
ctrl.callApi();
httpBackend.flush();
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
这是有效的。另外你可以做到这一点:
it('should ...', function(){
httpBackend.expectGET(/api/i).respond(200,{"test":"Test"});
ctrl.callApi();
httpBackend.flush();
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
这也有效,但它只验证,/ api已被调用...如果是这样,我不想要测试。
我认为主要问题是api-call上的星号表示法。尝试像我一样修改你的代码。如果这不应该有帮助,你应该调用你的标题函数。
祝你好运。