gpt4 book ai didi

javascript - 模拟整个 es6 类,除了 Jest 中的构造函数?

转载 作者:行者123 更新时间:2023-11-30 16:21:51 25 4
gpt4 key购买 nike

如果我有一个 A 类,像这样:

class A{
constructor(foo){
this.foo = foo;
}

doStuff(){
//Code protected by an NDA, they'll nuke my house if I tell you what it does.
}

nukeHouse(){
//The implementation of this is somewhat buggy...
}
}

我希望 A 类的用户能够访问 this.foo,所以我不想模拟构造函数。应该模拟所有其他方法。我可能可以手动说 A.prototype.doStuff = jest.genMockFunction()ù,并为 A.prototype.nukeHouse 做同样的事情,但我希望有一种方法可以做到这一点,而无需每次我向 A 添加方法时都必须更新模拟代码。

有办法吗?

最佳答案

我想通用的解决方案是简单地迭代 prototype 并为每个属性创建一个模拟函数:

var A = require.requireActual('./A');

Object.getOwnPropertyNames(A.prototype).forEach(function(prop) {
A.prototype[prop] = jest.genMockFunction();
});

module.exports = A;

如果该类扩展了另一个类,这可能会更加困难。

关于javascript - 模拟整个 es6 类,除了 Jest 中的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620071/

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