Jest выдает эту ошибку Matcher error: received value must be a promise
, потому что в expect
вы просто передаете ссылку на функцию. Без ()
- action
это просто ссылка на функцию, она ничего не будет возвращать.
Чтобы исправить эту проблему, вы должны вызывать функцию в ожидаемом порядке, например action()
, чтобы она возвращала объект обещания.
И вторая часть, вы должны выбросить ошибку, как. Promise.reject(new Error('some error'));
в отклонении, поэтому условие tothrow
может быть полностью заполнено.
Пример:
function hostelService() {
return Promise.reject(new Error('some error'));
}
const action = async () => {
await hostelService();
};
it( "Should throw the error", async () => {
await expect(action()).rejects.toThrow('some error');
});
Надеюсь, это будет полезно.