Angularjs 角单元测试.控制器中的模拟方法

Angularjs 角单元测试.控制器中的模拟方法,angularjs,unit-testing,jasmine,karma-jasmine,Angularjs,Unit Testing,Jasmine,Karma Jasmine,我需要模拟控制器中的服务方法。我知道如何模拟像service.method这样的简单服务,但不像这个。我不知道如何模仿“action.user.update”。如果我试图监视它,我会收到一个错误“无法读取未定义的”属性“更新” 我的服务: .service('action', ['$http', '$q', function ($http, $q) { var service = {}; service.user = { update: function (

我需要模拟控制器中的服务方法。我知道如何模拟像service.method这样的简单服务,但不像这个。我不知道如何模仿“action.user.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);
其中操作应该是在单元测试中创建的对象

i、 e

然后在测试中

scope.saveUser()
expect(action.user.update).toHaveBeenCalled()
更新小提琴

行动在哪里
scope.saveUser()
expect(action.user.update).toHaveBeenCalled()