Angular 单元测试 - 控制器中的模拟方法
Angular unit-test - mocking method in controller
我需要模拟控制器中的服务方法。我知道如何模拟像 service.method 这样的简单服务,但不像这个。我不知道如何嘲笑 "action.user.update"。如果我试图监视它,我会收到错误消息“无法读取未定义的 属性 'update'”。
我的服务:
.service('action', ['$http', '$q', function ($http, $q) {
var service = {};
service.user = {
update: function (data, config) {
return service.run({
name: config.name,
call: $http({
method: "POST",
url: "/user/edit",
data: data
}),
success: config.success,
error: config.error
});
}
};
return service;
}]);
你已经完成了一半
$provide.value('action', action);
其中 action 应该是您在单元测试中创建的对象
即
action = {
user: {
update: jasmine.createSpy('action.user.update')
}
}
$provide.value('action', action);
然后在测试
scope.saveUser()
expect(action.user.update).toHaveBeenCalled()
已更新fiddle
http://jsfiddle.net/3oavnmev/1/
我需要模拟控制器中的服务方法。我知道如何模拟像 service.method 这样的简单服务,但不像这个。我不知道如何嘲笑 "action.user.update"。如果我试图监视它,我会收到错误消息“无法读取未定义的 属性 'update'”。
我的服务:
.service('action', ['$http', '$q', function ($http, $q) {
var service = {};
service.user = {
update: function (data, config) {
return service.run({
name: config.name,
call: $http({
method: "POST",
url: "/user/edit",
data: data
}),
success: config.success,
error: config.error
});
}
};
return service;
}]);
你已经完成了一半
$provide.value('action', action);
其中 action 应该是您在单元测试中创建的对象
即
action = {
user: {
update: jasmine.createSpy('action.user.update')
}
}
$provide.value('action', action);
然后在测试
scope.saveUser()
expect(action.user.update).toHaveBeenCalled()
已更新fiddle http://jsfiddle.net/3oavnmev/1/