axios.get
используется для разрешения объекта, поэтому get
разрешается для этого объекта.
Похоже, что вы тестируете случай ошибки, и в этом случае axios.get
должен быть поддельным, чтобы отклонить:
import axios from 'axios';
import get from './code';
test('testing the api get method', async () => {
jest.spyOn(axios, 'get').mockRejectedValue(new Error('error'));
await expect(get()).rejects.toThrow('error'); // Success!
});
Обновление
OP обновил вопрос, чтобы спросить, как проверить наличие определенного типа ошибки.
Вы, вероятно, захотите выдать ошибку следующим образом:
try {
// ...
} catch (error) {
throw new SpecialError(error.message); // <= just use the error message
}
... и SpecialError
, вероятно, должны передать свои аргументы super
следующим образом:
export default class SpecialError extends Error {
constructor(...args) {
super(...args); // <= pass args to super
this.isSpecialError = true;
}
}
... но с учетом этих изменений вы можете протестировать так:
import axios from 'axios';
import get from './api';
import SpecialError from './specialError.js';
test('testing the api get method', async () => {
jest.spyOn(axios, 'get').mockRejectedValue(new Error('the error'));
const promise = get();
await expect(promise).rejects.toThrow(SpecialError); // <= throws a SpecialError...
await expect(promise).rejects.toThrow('the error'); // <= ...with the correct message
});
Обратите внимание, что тестирование для определенного типа ошибки и является немного сложным делом, поскольку toThrow
позволяет проверять одно или другое, но не оба одновременно. Вы можете обойти это ограничение, протестировав каждую из них в отдельности.