【问题标题】:how to handle catch in sinon, unit testing nodejs如何在 sinon 中处理 catch,对 nodejs 进行单元测试
【发布时间】:2020-06-21 04:14:37
【问题描述】:

在我的用户服务中:

createUser: async (data) => {
    const user = new UserDBEntryMapper(data);
    const createdUser = await UserModel.create(user).catch(error => {
      this.handleError(error);
    });
    return createdUser ? new UserBOMapper(createdUser) : null;
  }

在我的 user.test.js 中

it.only('Create New User', async () => {
    const stub = sinon.stub(UserModel, "create").returns(user);
    const created = await UserService.createUser(user);
    expect(stub.calledOnce).to.be.true;
});

将错误抛出为:

Create New User:
TypeError: UserModel.create(...).catch is not a function

如果我删除 UserService 中的 catch 块,测试通过,但我们需要一个 catch 块。我该如何处理?

注意:UserModel.create()是sequelize默认函数

【问题讨论】:

    标签: node.js unit-testing sequelize.js sinon-chai


    【解决方案1】:

    Promise 需要在模拟中返回。像这样的

    const stub = sinon.stub(UserModel, "create").returns(Promise.resolve(user));
    

    【讨论】:

    • 它没有用。还更新了 sn-p,我正在下面的单独函数中处理错误。
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2020-06-08
    • 2013-12-19
    • 2021-03-15
    • 2018-10-29
    相关资源
    最近更新 更多