Фабрика тестирования AngularJS и Jasmine

Я новичок в модульном тестировании 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();

    }));
});

person steveareeno    schedule 10.02.2016    source источник


Ответы (1)


Пожалуйста, добавьте это изменение.

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

Чтобы toHaveBeenCalled() вернуло true, вы должны вызвать свою функцию либо в блоке beforeEach, либо в блоке it.

person RIYAJ KHAN    schedule 10.02.2016