测试该函数被调用,参数在无极
问题描述:
鉴于这两个函数测试该函数被调用,参数在无极
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
require'ing /进口func1
我我想知道我应该怎么坚持func2
解决obj.method()
与stuff
作为论点。我正在考虑使用sinonJS对它进行保存,但是我不知道如何去修改它(因为我不能真正需要/导入obj方法来存储我的单元测试文件)。
我的可用测试套件是Mocha/Chai/Sinon,但是如果它可以用其他方式进行操作,那么这些并不是一个严格的要求。
答
轻微的解决方法,但你应该能够做到以下几点。
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
摩卡的文档,对如何测试异步功能一整节 - http://mochajs.org/#asynchronous-code – TheF1rstPancake
这是事实,但这不是问题。我的问题是如何去测试/断言一个对象的方法,只存在于一个模块的内部函数中,用一个特定的参数来调用。通常情况下,我只是用sinon.stub(obj,'method')存根,使用sinonJS,但是我很难看到这里应该如何完成。 – MadsRC