2015-12-31 162 views
0

我需要模拟控制器中的服务方法。我知道如何模拟像service.method这样的简单服务,但不喜欢这个。我不知道如何模拟“action.user.update”。如果我试图窥探它,我收到错误'无法读取属性'更新'未定义'。角度单元测试 - 控制器中的模拟方法

JsFidleDemo

我的服务:

.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; 
}]); 
+0

哪里是 '行动' –

回答

0

你一半有办法有

$provide.value('action', action); 

那里的行动应该是你在单位创建对象测试

action = { 
    user: { 
     update: jasmine.createSpy('action.user.update') 
    } 
} 
$provide.value('action', action); 

,然后在测试

scope.saveUser() 
expect(action.user.update).toHaveBeenCalled() 

更新小提琴 http://jsfiddle.net/3oavnmev/1/