繁体   English   中英

如何处理sinon中的catch,单元测试nodejs

[英]how to handle catch in sinon, unit testing nodejs

在我的用户服务中:

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

如果我删除UserServicecatch块,测试通过,但我们需要在那里有一个 catch 块。 我该如何处理?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM