私は、データ サービス (データ サービスは http サーバーに行く) に依存する角度コントローラーを作成しており、その動作をモックしたいと考えています。
私は bard js と呼ばれるライブラリをモックしています。これには、bard.mockServiceと呼ばれるサービスをモックするための API があります。
私がやっている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 が 1 回呼び出されていることを確認したいと思います。
コントローラーはメソッド 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() {
};
}})();
このテストがパスする理由と、メソッドが 1 回呼び出されていることを確認するにはどうすればよいかを知りたいです。
私は次の指示に従いました: https://github.com/wardbell/bardjs#mockService