我有服务,在该服务中,我有这样的功能
settings.updateProfile = function(patient){
return $q(function(resolve, reject) {
var user = patient;
dbService.updateUser(user).then(
function (response) {
if (response.res) {
LoopBackAuth.setUser(LoopBackAuth.accessTokenId, response.res.name, LoopBackAuth.currentUserRole);
LoopBackAuth.save();
location.reload();
patient.name == response.res.name ? resolve(true) : resolve(false);
}
},
function (error) {
resolve(false);
}
);
});
};
这里dbService.updateUser函数也包含$ promise。我想测试这个函数并检查它是否解析为true或false。我知道对于http api调用我们使用$ httpBackend服务。但它并没有像我期待的那样发挥作用。现在我正在测试它。
it('Should return correct result', function() {
var result = true;
var patient = {"name": "newUser"};
$httpBackend.whenGET(patient).respond(200, $q.when(result));
expect(settingsFactory.updateProfile).not.toHaveBeenCalled();
expect(result).toEqual(true);
settingsFactory.updateProfile(patient)
.then(function(res) {
result = res;
});
$httpBackend.flush();
expect(settingsFactory.updateProfile).toHaveBeenCalledWith(patient);
});
显示错误:
Error: Unexpected request
答案 0 :(得分:1)
$httpBackend.whenGET(patient).respond(...);
失败,因为patient
是一个对象{"name": "newUser"}
,而且当GET期待一个字符串时。例如:
$httpBackend.whenGET('/patient').respond(...);