1

私は、データ サービス (データ サービスは 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

4

2 に答える 2

-3

これは私が考えていない答えではなく、ただの質問です。angularが組み込まれているのに、なぜサードパーティのhttpモックを導入するのですか? それが意識的な決定だった場合、何があなたをそこに向かわせたのですか?service$httpBackend

于 2015-06-26T01:00:56.657 に答える