模拟获取POST

时间:2018-01-09 09:24:03

标签: node.js unit-testing mocha integration-testing fetch-mock

我正在编写以下函数的测试用例:

handleShare(response, payload) {
    ShareUtils.listUsers()
      .then((users) => {
          users.forEach(user => userList.push({
              name: user.name,
              id: user.id)
          });
          return SessionUtils.getSessionData(SESSION_ID));
      })
  .then((sessionData) => {
    //construct share object
    return fetch('http://myEndpoint', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    })
  })
  .then(r => r.json())
  .then((response) => {
    Logger.log(response)
  })
  .catch((err) => {
    ErrorHandler.error(err)
  });
}

我的测试用例是

describe('Share Controller', function() {
  it('should call handleShare correctly', function(done) {
    let listUsers = sinon.stub(ShareUtils, 'listUsers').resolves(listOfUsers);
    let sessionData = sinon.stub(SessionUtils, 'getSessionData').resolves(slackSessionData);
    fetchMock.mock({
        name: 'share',
        matcher: '/myEndpoint/',
        method: 'POST',
        response: 'ok'
      })
      .catch();
    ShareController.handleShare({}, payload);
    console.log(fetchMock.done());
    expect(fetchMock.called()).to.be.true;
    done();
  });
});

但每当我运行测试用例时,它都会输出 AssertionError:预期false为真

我错过了什么吗?我已经正确设置了mocha测试套件,并且每个其他测试运行正常,但是这个fetch模拟确实很麻烦。 感谢您的帮助。

0 个答案:

没有答案