2015-12-31 7 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/

Смежные вопросы