【发布时间】:2017-12-18 18:03:17
【问题描述】:
我有一个正在测试的类,它创建另一个类的实例。我想存根整个第二个类,这样它的构造函数就不会被调用。例如,如果我有这个设置:
Test.js
class Test {
constructor() {
}
func() {
let foo = new Foo()
foo.hello()
}
}
Foo.js
class Foo {
constructor() {
this.a = 1
this.b = 2
this.c = 3
console.log('original constructor')
}
hello() {
console.log('original hello')
}
goodbye() {
console.log('original goodbye')
}
}
在我的测试文件中,我想以某种方式将整个 Foo 类存根,这样当我为 Test.func() 运行测试时,它不会调用原始的 Foo 构造函数,而是返回一个假的Foo 对象的存根构造函数。然后,我将伪造Foo 对象的hello 函数存根以打印stubbed hello 而不是original hello。
我怎样才能像这样对整个班级存根?
注意:我不想创建可以在我的测试文件中使用的存根实例。我需要对构造函数本身进行存根,这样如果堆栈中的某些东西调用了构造函数,它就会返回一个存根实例。
【问题讨论】:
标签: javascript node.js unit-testing sinon