Я пишу угловой контроллер, у которого есть зависимость от dataservice (служба данных идет на http-сервер), и я хотел бы издеваться над его поведением.mocking dataservice with bard js
Я издеваюсь над библиотекой под названием bard js, и у нее есть api для издевательства сервисов под названием bard.mockService.
В заявлении beforeEach я делаю:
beforeEach(function() {
bard.appModule('app.process.creation');
bard.inject('$controller', '$rootScope', '$q', 'processCreationDataservice');
bard.mockService(processCreationDataservice, {
createProcess: $q.when({}),
_default: $q.when([])
});
controller = $controller('ProcessCreationController');
$rootScope.$apply();
});
тогда мой тест:
it('should call create process data service to create process', function() {
controller.create();
expect(processCreationDataservice.createProcess).to.have.been.calledOnce;
});
Как вы можете видеть в тесте я хочу утверждать, что dataservice.createProcess вызывается один раз ,
Контроллер не вызывает метод processCreationDataservice.createProcess и все еще проходит тест.
(function() {
angular
.module('app.process.creation')
.controller('ProcessCreationController', ProcessCreationController);
ProcessCreationController.$inject = ['processCreationDataservice'];
function ProcessCreationController(processCreationDataservice) {
var vm = this;
vm.process = {
name: '',
bankId: ''
};
vm.create = function() {
};
}})();
Я хотел бы знать, почему этот тест проходит, и что я должен делать, чтобы утверждать, что метод вызывается один раз.
я следовал этим инструкциям: https://github.com/wardbell/bardjs#mockService
Да, это было так. Не заметил, что скрипт не загружается. Большое спасибо! – Daniel
@ В случае, если вы хотите загрузить модуль как зависимость ex: bard.appModule ('coreModule', ['utilityModule']), вам нужно идентифицировать зависимость как свой собственный модуль перед началом работы? Или сделать дополнительные ссылки на него? – Winnemucca