【问题标题】:sinon.js: fake.rejects - test with calledWithsinon.js: fake.rejects - 使用 calledWith 进行测试
【发布时间】:2018-09-28 15:20:28
【问题描述】:

我有一个函数,它在数据库中查找用户 - 在这种情况下,我想“拒绝”,因为找不到用户。

如果未找到用户,则使用拒绝错误和第二个参数 (false) 调用回调

return Login
  .findOne({
    where: {
      id: decoded.loginId,
      expireDate: {
        $gt: now,
      },
    },
  })
  .then(login => done(null, !!login))
  .catch(error => done(error, false));

我伪造 findOne 函数来拒绝:

Login.findOne = sinon.fake.rejects(false);

如何检查我的回调是否被正确调用了?

// Inside validateToken the above code is implemented
const done = sinon.fake();
await validateToken({
  tokenInvalidate: moment().add(1, 'minute').toDate(),
  loginId: 1,
}, { server }, done);
done.should.be.calledWith(new Error(false), false);

我尝试了很多参数,但似乎无法在这里找到我应该使用什么作为参数。也许我弄错了文档?我不知道...这是实际输出:

 AssertionError: expected fake to have been called with arguments Error: false, false
Error: false
false

模块:

"sinon": "^6.2.0",
"sinon-chai": "^3.2.0",

提前致谢

【问题讨论】:

    标签: sinon sinon-chai


    【解决方案1】:

    解决了问题...

    必须使用 sinon.fake.rejects(errorInstance) 而不是 false 或内联创建的错误实例。

    在检查中我必须使用相同的实例:

    const error = new Error();
    Login.findOne = sinon.fake.rejects(error);
    done.should.be.calledWith(error, false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 2020-09-09
      相关资源
      最近更新 更多