2016-03-08 104 views
0

我在angularJS中测试一个简单的服务时遇到了问题,并且在阅读了一打教程和文章后,我没有看到我的代码出了什么问题,也许您可​​以帮我一下。使用jasmine测试角度服务

我的服务故意很简单,所以我不必担心它的代码。它与下面的代码的getter/setter服务:

app.service("GetterSetterService", function() { 

    item = ""; 

    return { 
    get: function() { 
     return item; 
    }, 
    set: function(value) { 
     item = value; 
    } 
    } 
}); 

当 “应用程序” 被定义为:

var app = angular.module('myTestApplication', ["ngMock"]); 

我与茉莉花测试代码如下:

"use strict"; 

describe("GetterSetterService", function() { 

    var service; 

    beforeEach(inject(function(_GetterSetterService_) { 
    service = _GetterSetterService_; 
    })); 

    it("correctly defines the service", function() { 
    expect(service).not.toBeUndefined(); 
    expect(service).not.toBeNull() 
    }); 

    it("has a default value if no value has been set", function() { 
    expect(service.get()).toBe(""); 
    }); 

    it("correctly sets a value", function() { 
    service.set("newValue"); 
    expect(service.get()).toBe("newValue"); 
    }); 
}); 

但是如果我放了痕迹,它永远不会传入“注入”回调,因此不会注入服务,并且无法正常工作。有人有什么错误的线索吗?我不明白,我越来越绝望。

谢谢你的时间!

回答

0

这是完整的测试吗?如果是这样,那么你错过了应用程序定义的加载。例如。

beforeEach(module('myTestApplication')); 

而且你不需要注入ngMocks到实际的应用 - 这是只关心嘲弄了测试,这样你只会有它在karma.conf.js文件。

因此,基于上述,我认为您的理解在测试时很难理解。您需要:

  1. 确保必要的文件都包含在karma.conf.js文件
  2. 负载使用beforeEach语法模块上方
  3. 描述注入你在测试什么 - 你正在做的正确。
  4. 定义并运行测试
相关问题