这个Angular服务Jasmine测试中缺少什么?

时间:2017-01-31 03:11:16

标签: angularjs jasmine karma-jasmine jasmine2.0

In this plunk我有一个由Jasmine测试测试的Angular服务。测试显然无法找到服务,我得到了

  

错误:[$ injector:unpr]   http://errors.angularjs.org/1.6.1/ $注射器/ unpr?P0 = UtilsProvider%20%3 C-%20Utils

以及

  

错误:声明位置

这里的问题是什么?

使用Javascript:

var app = angular.module("app", [])

app.service('Utils', function(){

    this.sum = function(a, b) {
          return a + b;
    };

});


describe("Testing Service Utils", function() {

    beforeEach(function() {
        angular.module("app");
    });

    it('should sum',
        inject(function(Utils) {
            expect(Utils.sum(1,2)).to.equal(3);
    }));

});

1 个答案:

答案 0 :(得分:1)

两个问题......

  1. 要注册模块配置以进行测试,您需要使用angular.mock.module

    beforeEach(angular.mock.module('app'))
    // or simply beforeEach(module('app'))
    
  2. 平等断言是toEqual,而不是to.equal

    expect(Utils.sum(1,2)).toEqual(3)
    
  3. http://plnkr.co/edit/UZfKILseNklw2MgO2l8c?p=preview