我有一个函数返回一个Promise
包裹着另一个函数,它与它自己的promises / callback实现一样,如下所示:
function getResult() {
return new Promise((resolve, reject) => {
const service = Service(config)
return Service.initialize({scope: 'param'})
.success((result) => {
result ? resolve(service.res) : reject(new Error('Something happened'))
})
.error(() => {
reject(new Error('Something happened'))
)})
})
}
编辑:我可以将上述功能重写为:
function getResult(done) {
const service = Service(config)
Service.initialize({scope: 'param'})
.success((result) => {
result ? done(null, result) : done(new Error('Something happened'), null))
})
.error(() => {
done(new Error('Something happened'), null)
}
我不知道如何对这样的事情进行单元测试?我尝试stub
Service
并使用sinon
检查是否已调用,但以下内容无效:
it('should initialize service and return res', () => {
const mockService = sinon.stub(Service, 'initialize')
mockService.withArgs({scope: 'param'}).returns(Promise.resolve(true))
expect(mockService.callCount).to.equal(1)
})
任何帮助都将不胜感激。
答案 0 :(得分:0)
您只是在检查它是否被调用,因此无需等待任何事情。
it('should initialize service and return res', () => {
const mockService = sinon.stub(Service, 'initialize')
mockService.withArgs({scope: 'param'}).returns(Promise.resolve(true))
getResult()
expect(mockService.callCount).to.equal(1)
})