我用的是反应打字本。
所以我在我的项目中有类似的类设置。Foo有两个成员方法a and b。b是一个私有方法。有一个类Buzz,它负责数据获取,并在完成时调用传递给它的私有方法。
class Buzz {
callLater({ onMsg }) {
setTimeout(() => {
onMsg('Buzz completed')
}, 2000)
}
}
class Foo {
a() {
console.log('calling a');
const buzz = new Buzz()
buzz.callLater({onMsg: this.b})
}
private b(msg) {
console.log('calling b');
console.log(msg)
}
}我想在打字稿中测试私有的method b,我正在做下面这样的事情。但是,当测试运行程序运行(jest)时,它会失败,并表示fooInstance.b不是一个函数。
const foo = new Foo();
const fooInstance = (Foo.prototype as unknown) as { b: () => void };
fooInstance.b()不明白我将如何测试它。被困了几个小时。
发布于 2022-11-08 13:30:31
有一个类Buzz,它负责数据获取,并在完成时调用传递给它的私有方法。
那么Buzz的职责是什么呢?它的责任是调用传递给它的论点。您不关心论点是什么,只是嗡嗡声实例需要在适当的时候调用它。
foo.a的职责是什么?这是为了创造一种热议,称它是callLater方法,console.log是来自buzz的消息。您不关心它是通过调用foo.b来完成的,通过这样编写代码可以获得相同的结果:
class Foo {
a() {
console.log('calling a');
const buzz = new Buzz()
buzz.callLater({onMsg: console.log})
}
}不测试您的实现细节,测试您的行为。
https://stackoverflow.com/questions/74361344
复制相似问题