この質問に対して重複がありましたが、問題を解決できませんでした。コントローラの初期化中にJasmine Js-SpyOn Fakecall
私はコントローラを持っており、コントローラの初期化中にfetchtemplate()が最初に呼び出されてから、私のfetchtemplate()が呼び出されています。
コントローラーの初期化中に実際の(コントローラー)fetchtemplate()を呼び出すのを止めるにはどうすればよいですか?私はその時に存在していないfetchtemplate()
としてエラーが発生しましたthis.init()
前spyOnを配置しようとしている
describe("...",function(){
beforeEach(inject(function($controller,...) {
scope = $rootScope.$new();
this.init = function() {
$controller('ChangeControlCreateController', {
$scope: scope
});
}
}));
describe('Function', function() {
it("-- check for trueness",function(){
this.init() ; //Initialization of the controller
spyOn(scope,'fetchtemplate').and.callFake(function() {
return 101;
});
var fakeResponse = scope.fetchtemplate();
expect(scope.fetchtemplate).toHaveBeenCalled();
expect(fakeResponse).toEqual(101);
});
});
});
- 私の意図は、私のspec.Pleaseに()関数fetchtemplateを嘲笑私のスペックを見ていることですスパイオンする時間。
angular.module('...', [...])
.controller('ChangeControlCreateController', ["$scope"...,
function ChangeControlCreateController($scope,...) {
$scope.fetchtemplate = function() {
console.log("controller's function");
...
};
$scope.fetchtemplate();
});
私が取得していますどのような結果がある - - まずコンソール項目「コントローラの機能」とし、仕様はモック機能が実行されている
私のコントローラのコードの構造は次のようになります。私はあなたがテスト目的でないようにしたい何かをやっている機能にはいくつかの呼び出しを行っている、正しく理解していればそれで
便利です願っていますあなたも私たちにコントローラコードを与えることができますか?私はあなたがそのfetchtemplateメソッドをどのように呼び出すのかを知る必要があります。 – sam
確かに、コントローラのコード構造も追加しました。 @サム – M3ghana