难以为Angular编写茉莉花单元测试,因为有很多依赖项

时间:2015-09-21 19:20:09

标签: angularjs jasmine karma-jasmine

我是AngularJS的新手。我们正在使用业力/茉莉花测试工具。

我打算通过我试图在这里进行单元测试的代码。我希望你能帮我写一个单元测试。我能够编写非常简单的单元测试。但是存在很多依赖关系的模块给我带来了麻烦。

以下是我尝试进行单元测试的代码:

var referencedataservice = angular.module('referenceDataService', []);

referencedataservice.factory('dataService', function($localStorage, $http, constant) {
    var username = $localStorage.user.username;
    var password = $localStorage.user.password;

    var request = {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        data: {
            username: username,
            password: password
        }
    };

    function getCountries() {
        request.url = constant.URL_GET_COUNTRIES;
        return $http(request).then(
            function(result) {
                return result.data;
            });
     }
}

这是常量服务的样子:

angular.module('constantsService', []).constant("constant", {
    "URL_GET_COUNTRIES": "app/lookup/getCountries",
    "URL_GET_PRODUCT_TYPES": "app/lookup/getProductTypes",
});

我可以很容易地对constantsService进行单元测试。但我无法弄清楚如何为referenceDataService编写单元测试。以下是我的尝试:

describe("Test Reference Data Service", function() {
  var a;
  var dataService;
  var $localStorage;
  var constant;
  var $http;

  beforeEach(module('ngStorage', 'constantsService', 'referenceDataService'));


  beforeEach(inject(function($localStorage, _constant_, _dataService_) {
    constant = _constant_;
    $http = _$http_;
    dataService = _dataService_;
  }));


  it("should be the same", function() {
    var countries;

    dataService.getCountries().then(function(data) {
        countries = data.referenceDataValues;
    });
    a = countries[0].id;
    expect(a).toBe("1000000");
  });
});

它显然不起作用。测试甚至无法编译。继续获得与依赖相关的错误。我只是不知道如何修复它们。

1 个答案:

答案 0 :(得分:0)

您的getCountries是异步的,因此您需要在测试中使用“完成”。

profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/plain,text/csv,application/csv,application/download,application/octet-stream')

来源:http://jasmine.github.io/2.0/introduction.html