2017-02-19 64 views
0

假设我们有一个服务调用api,我们使用这个服务在控制器中做一些逻辑。 有什么更好的使用?Jasmine JSON灯具VS服务嘲笑

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以任何方式执行真正的请求)。

这允许在测试变红时明确地确定哪个单元失败。