从同一个类中嘲笑一个promise返回方法

时间:2018-05-30 17:24:31

标签: javascript unit-testing jestjs

我想模拟/存在一个类方法的解析,该方法在测试同一个类的另一个方法时返回一个promise。我使用jest

我有以下课程Blah我要测试foo()方法:

export default class Blah {
  foo () {
    this.bar().then(result => {
      // some logic here
    })
  }

  bar () {
    return new Promise(function (resolve, reject) {
      // fetches some stuff over the network
      resolve('hello world')
    })
  }
}

因为foo()使用bar() - 一种通过网络执行内容的承诺返回方法 - 我想嘲笑bar()的决心;让我们说让它解决what up

让我们说测试看起来像这样:

import Blah from './blah'

test('foo() - bar() resolves "what up"', () => {
  const blah = new Blah()
  // mock blah.bar() so that is resolves "what up"

  // {some assertions on blah.foo() here}
})

这是我第一次与jest合作并且我已经阅读过这些文档,但我仍然很难围绕这个案例。

如何在测试bar()时模拟foo()的已解析值?

1 个答案:

答案 0 :(得分:1)

仍然只是JavaScript意味着任何对象属性都可以被动态覆盖:

//li[a and preceding::h2[1][.='Sales'] and ../following-sibling::*[1][self::hr]]