使用Promise中的参数测试该函数

时间:2017-10-28 17:58:03

标签: node.js unit-testing mocha sinon

鉴于这两个功能

function func1() {
  return new Promise((resolve, reject) => {
    return resolve({
      method: function(variable) {
        return variable
      }
    })
  })
}

function func2() {
  return new Promise((resolve, reject) => {
    func1()
    .then(obj => {
      return resolve(obj.method('stuff'))
    })
  })
}

注意:它们都在一个单独的模块中,func2需要导入/导入func1

我想知道如何断言func2obj.method()作为参数解析stuff。我正在考虑使用sinonJS对其进行存根,但我不确定如何对其进行存根(因为我无法在单元测试文件中真正需要/导入obj方法到存根)。

我可用的测试套件是Mocha / Chai / Sinon,但是如果它可以通过其他方式实现,那么这些并不是一个严格的要求。

1 个答案:

答案 0 :(得分:0)

轻微的解决方法,但您应该能够执行以下操作。

import * as functions from './func1';

const obj = {
  method: sinon.spy()
};

sinon.stub(functions, 'func1')
  .returns(new Promise(obj));

expect(obj.method).to.have.been.calledWith('stuff'); // sinon-chai expectation