最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

sinon:如何存根整个类,而不仅仅是一个方法

运维笔记admin12浏览0评论

sinon:如何存根整个类,而不仅仅是一个方法

sinon:如何存根整个类,而不仅仅是一个方法

我有一个正在测试的类,它创建了另一个类的实例。我想要删除整个第二个类,以便它的构造函数永远不会被调用。例如,如果我有这个设置:

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对象的存根构造函数。然后我将伪造hello对象的Foo函数存根打印stubbed hello而不是original hello

我怎么能像这样存根整个班级?

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

回答如下:

在其他文件中:

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

var stub = sinon.createStubInstance(MyConstructor)

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

发布评论

评论列表(0)

  1. 暂无评论