2017-02-19 15 views
0

Предположим, у нас есть служба, которая вызывает api, и мы используем эту услугу для выполнения некоторой логики в контроллере. Что лучше использовать?Jasmine JSON fixtures VS service mocking

user = $injector.get('userSrv'); 
var myFixture = angular.fromJson(window.__html__['mydata.json']); 
$httpBackend.whenGET('url/').respond(myFixture); 
user.getGender(); 

или просто используя

beforeEach(module(function($provide) { 
    $provide.service('userSrv', function(){ 
     return { 
      getGender: function(){ 
       return 'something'; 
      } 
     } 
    }); 
}) 

ответ

0

Оба должны быть использованы, но в разных тестах.

В спецификации контроллера предполагается, что услуга будет издеваться, потому что тестируемое устройство является контроллером.

В служебной спецификации предполагается, что запрос http будет издеваться, потому что тестируемое устройство является сервисом (это позволяет поддерживать синхронный и независимый тест от бэкэнд, невозможно выполнить реальные запросы с ngMock любым способом).

Это позволяет однозначно определить, какое устройство сработало, когда тест станет красным.