【问题标题】:AngularJS and Jasmine testing factoryAngularJS 和 Jasmine 测试工厂
【发布时间】:2016-02-10 23:16:13
【问题描述】:

我是 angularjs 单元测试的新手。我有一家工厂,我正试图用 jasmine 进行监视,但我无法弄清楚测试规范的语法。下面是工厂:

app.factory('assetFactory', function ($http) {
    var baseAddress = "../api/";
    var url = "";
    var factory = {};

    factory.getAssets = function (term) {
        url = baseAddress + "asset/search/" + term;
        return $http.get(url);
    };
    return factory;
});

这是我的测试规范,它在期望语句上失败(错误:预期的间谍 getAssets 已被调用):

describe('assetFactory', function () {
    beforeEach(function () {
        module('fixedAssetApp');
    });

    beforeEach(inject(function (assetFactory) {
        spyOn(assetFactory, 'getAssets').and.callThrough();
    }));

    it('should be defined', inject(function (assetFactory) {
        expect(assetFactory).toBeDefined();
    }));

    it('should have been called, inject(function (assetFactory) {
        expect(assetFactory.getAssets).toHaveBeenCalled();

    }));
});

【问题讨论】:

    标签: angularjs unit-testing jasmine spyon


    【解决方案1】:

    请添加此更改。

    beforeEach(inject(function (assetFactory) {
            spyOn(assetFactory, 'getAssets').and.callThrough();
            assetFactory.getAssets();
        }));
    

    为了 toHaveBeenCalled() 返回 true,您必须在 beforeEachit 块中调用您的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2017-10-07
      • 2016-10-22
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多