我正在使用react typescript 。
所以我在我的项目中有一个类似的类设置。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)
}
}
我想测试typescript中的私有method b
,我正在做类似下面的事情。但是当测试运行程序运行(jest)
时,它失败了,并说fooInstance.b
不是一个函数
const foo = new Foo();
const fooInstance = (Foo.prototype as unknown) as { b: () => void };
fooInstance.b()
不明白我如何才能测试它。卡住了几个小时。
1条答案
按热度按时间rfbsl7qr1#
有一个类Buzz负责数据获取,并在完成时调用传递给它的私有方法。
那么
Buzz
的职责是什么呢?它的职责是调用传递给它的参数。你不关心参数是什么,只关心buzz示例需要在适当的时候调用它。foo.a
的职责是什么?它的职责是创建一个buzz,调用它的callLater
方法,console.log
是buzz的消息。你不在乎它是通过调用foo.b
完成的,同样的结果可以通过这样写代码来实现: