gpt4 book ai didi

javascript - sinon:如何 stub 整个类,而不仅仅是一个方法

转载 作者:行者123 更新时间:2023-12-05 00:38:43 24 4
gpt4 key购买 nike

我有一个正在测试的类,它创建另一个类的实例。我想 stub 整个第二个类,这样它的构造函数就不会被调用。例如,如果我有这个设置:

测试.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')
}
}

在我的测试文件中,我想以某种方式 stub 整个 Foo类,这样当我为 Test.func() 运行测试时它不调用原始 Foo构造函数,而是一个返回假 Foo 的 stub 构造函数目的。然后我将 stub hello假货功能 Foo打印对象 stubbed hello而不是 original hello .

我怎样才能像这样对整个类(class)进行 stub ?

注意:我不想创建可以在测试文件中使用的 stub 实例。我需要 stub 构造函数本身,这样如果堆栈中的某些东西调用构造函数,它就会返回一个 stub 实例。

最佳答案

在 sinon 文档中:

如果要创建 MyConstructor 的 stub 对象,但不希望调用构造函数,请使用此实用函数。

var stub = sinon.createStubInstance(MyConstructor)

http://sinonjs.org/releases/v1.17.7/stubs/

关于javascript - sinon:如何 stub 整个类,而不仅仅是一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47874022/

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