我已經看到一組重複的問題,但無法解決問題。Jasmine Js - SpyOn Fakecall在控制器初始化期間
我有一個控制器,並在控制器初始化期間,fetchtemplate()先被調用,然後我的模擬fetchtemplate()被調用。
如何在控制器初始化期間停止調用實際(控制器)fetchtemplate()?我的本意是嘲笑功能fetchtemplate()在我的spec.Please看看我的規格 -
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);
});
});
});
我試圖放置spyOn這給了錯誤的fetchtemplate()
在不存在this.init()
前時間間諜。
我的控制器代碼結構看起來像 -
angular.module('...', [...])
.controller('ChangeControlCreateController', ["$scope"...,
function ChangeControlCreateController($scope,...) {
$scope.fetchtemplate = function() {
console.log("controller's function");
...
};
$scope.fetchtemplate();
});
我所得到的結果是 - 首先控制檯項目「控制器的功能」,然後規範與模擬功能的執行。我想模擬功能執行沒有控制器的功能執行
你可以給我們的控制器代碼嗎?我需要看看你如何調用fetchtemplate方法 – sam
當然,我也添加了控制器代碼結構。 @sam – M3ghana