1

我有一个函数返回一个Promise包裹另一个函数的函数,该函数与它自己的承诺/回调实现一起使用,如下所示:

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使用Serviceandsinon来检查它是否被调用,但以下方法不起作用:

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)
  })

任何帮助,将不胜感激。

4

1 回答 1

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)
  })
于 2017-07-17T13:45:15.027 回答