gpt4 book ai didi

javascript - 如何在 Jest 中测试调用和应用函数?

转载 作者:行者123 更新时间:2023-11-29 10:30:05 24 4
gpt4 key购买 nike

这是我的callnapply.js 文件

const callAndApply = {
caller(object, method, nameArg, ageArg, tShirtSizeArg) {
method.call(object, nameArg, ageArg, tShirtSizeArg);
},
applier(object, method, argumentsArr) {
method.apply(object, argumentsArr);
},
};
module.exports = callAndApply;

这是测试文件中的一个片段,其中包含无效测试:

const callnapply = require('./callnapply');

test('testing Function.prototype.call as mock function', () => {
const outer = jest.fn();
const name = 'Aakash';
const age = 22;
const tee = 'M';
callnapply.caller(this, outer, name, age, tee);
expect(outer.call).toHaveBeenCalledWith(name, age, tee);
});

我该如何编写测试来检查我传递的 method 实际上是否仅由 Function.prototype.call 函数调用?我想检查是否正在调用 .call(),而不是为 method 调用编写的其他实现。

最佳答案

您可以模拟 .call() 方法本身:

const outer = function() {}
outer.call = jest.fn()

然后你可以在 outer.call 上做通常的 Jest 模拟测试。

这是工作测试文件:

const callnapply = require('./callnapply');

test('testing Function.prototype.call as mock function', () => {
const outer = function() {};
outer.call = jest.fn();
const name = 'Aakash';
const age = 22;
const tee = 'M';
callnapply.caller(this, outer, name, age, tee);
expect(outer.call).toHaveBeenCalledWith(this, name, age, tee);
});

参见 this working REPL .

关于javascript - 如何在 Jest 中测试调用和应用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48427099/

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