如何为Angularjs服务编写测试规范?

时间:2014-02-03 09:40:12

标签: javascript angularjs jasmine angularjs-service

我有一点Angular Service来存储和检索数据。如何编写用于测试此服务的Jasmine测试规范?

angular.module("myServices").factory('dataStore', [
    function() {
      var DATASTORE;
      DATASTORE = {};
      return {
        get: function(id) {
          if (DATASTORE[id] != null) {
            return DATASTORE[id];
          } else {
            return null;
          }
        },
        put: function(id, data) {
          return DATASTORE[id] = data;
        }
      };
    }
  ]);

以下规格对我不起作用:

"use strict";
describe("Service: dataStore", function() {
  var store;
  store = null;
  beforeEach(function() {
    module("myServices").inject([
      'dataStore', function(dataStore) {
        return store = dataStore;
      }
    ]);
  });
  it("should return null", function() {
    expect(store.get('some')).toBe(null);
  });
});

2 个答案:

答案 0 :(得分:1)

首先,您应该在beforEach块内加载模块。之后你可以使用inject函数 - angular和jasmin将为你完成剩下的工作。

"use strict";
describe("Service: dataStore", function() {
  var store;

  beforeEach(module('myServices'));

  beforeEach(inject(function(dataStore){
      store = dataStore;
  }));

  it("should return null", function() {
    expect(store.get('some')).toBe(null);
  });
});

答案 1 :(得分:0)

阅读此Testing Angular Services Documentation应该让您入门

至于您的问题,请在 beforeEach 块中注入myServices模块,并在 it 块中注入dataStore服务。

beforeEach(module('myServices'));

it("should return null", 
  inject(function(dataStore) {
    expect(dataStore.get('some')).toBe(null);  
}));