как справиться с уловом в sinon, юнит-тестирование nodejs - PullRequest
0 голосов
/ 09 марта 2020

в моем UserService:

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

Если я удалить catch блок в UserService тест пройден, но нам нужен блок catch там. Как мне справиться с этим?

Примечание: UserModel.create() - это sequelize функция по умолчанию

1 Ответ

0 голосов
/ 09 марта 2020

Обещание должно быть возвращено в макете. Как то так

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