gpt4 book ai didi

javascript - Jasmine:如何正确监视函数调用?

转载 作者:行者123 更新时间:2023-12-03 04:54:29 25 4
gpt4 key购买 nike

我正在尝试在下一个场景中测试函数调用:

JS:

var Demo = function(option) {
if (option) func();

function func() {
console.log('called')
}

return {
'func': func
}
}

Jasmine :

beforeEach(function() {
var demo = new Demo(true);
spyOn(demo, 'func');

this.demo = demo;
});

it("should call func()", function() {
expect(this.demo.func).toHaveBeenCalled();
});

尽管它在控制台中记录了'叫',但它不符合规范:

Expected spy func to have been called.

从代码流来看,我认为发生这种情况是因为监视在调用函数之后开始。所以我的问题 - 在测试中捕获函数调用的正确方法是什么?

JSFiddle

最佳答案

这可能是更好的方法。添加 func 作为演示原型(prototype)的一部分。然后你可以将 spy 连接到原型(prototype)。

var Demo = function(option) {
if (option) this.func();
}

Demo.prototype.func = function(){
console.log("called")
}

beforeEach(function() {
spyOn(Demo.prototype, 'func')
var demo = new Demo(true);
this.demo = demo;
});

it("should call func()", function() {
expect(this.demo.func).toHaveBeenCalled();
});

http://jsfiddle.net/kfu7fok1/6/

关于javascript - Jasmine:如何正确监视函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42493370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com