私はカルマ-ジャスミンを始めるためにしようとしていると、このテストが失敗した理由を、私は思ったんだけど:AngularJS - 別の関数内から関数が呼び出されたかどうかをテストする方法は?
私は以前、私は、次のしているこのテスト用に設定した私のコントローラでit("should call fakeFunction", function() {
spyOn(controller, 'addNew');
spyOn(controller, 'fakeFunction');
controller.addNew();
expect(controller.fakeFunction).toHaveBeenCalled();
});
:
function addNew() {
fakeFunction(3);
}
function fakeFunction(number) {
return number;
}
両方addNew
とfakeFunction
使用して露出している:
vm.addNew = addNew;
vm.fakeFunction = fakeFunction;
試験ただし、次で失敗:
Expected spy fakeFunction to have been called.
私は私のテストの中から関数を呼び出す場合、私はテストパスを作ることができます。しかし、私はfakeFunction
が別の関数によって呼び出されたかどうかをテストすることができました。これを達成するための適切な方法は何ですか?
アップデート:私はちょうど知りたい
var vm = this;
vm.message = 'Hello';
:私は私のコントローラで次置けばテストに合格
it('should say hello', function() {
expect(controller.message).toBe('Hello');
});
:
//test.js
beforeEach(function() {
module("app");
inject(function(_$rootScope_, $controller) {
$scope = _$rootScope_.$new();
controller = $controller("CreateInvoiceController", {$scope: $scope});
});
});
は、私のようなものをテストする場合パブリック関数が別の関数から呼び出されたかどうかをテストする方法。
私は 'vm.fakeFunction'を呼び出そうとしましたが、どちらも動作しません。どのように正確に行われますか? –
@RaphaelRafatpanah '' vm'が何であるか分かりませんが、それはあなたがテストしているものではありません。あなたは 'controller.fakeFunction'が呼び出されたことをテストしています – Vadim
わかりません。 'vm'は角型コントローラで' this'をキャプチャするための一般的な変数です。実際には、 'vm'と' controller'はどちらも 'this'を参照するべきです。 –