#node.js #jestjs
#node.js #jestjs
Вопрос:
Я написал тест с использованием jest
библиотеки. Этот тест является асинхронным.
Это мой тест:
test('Should fail because of missing arguments in saving file', () => {
expect(async () => {
const awsTestStorage = new Storage({
aws: {
accessKeyId,
secretAccessKey,
bucketName: AWSS3BucketName,
},
});
const filename = 'StorageModuleTestONLYAWS_WITHTHROW.txt';
await awsTestStorage.saveFile(filename);
}).toThrow();
});
Я не предоставил accessKeyId, secretAccessKey, AWSS3BucketName
, потому что они являются частными, но я гарантирую, что они предусмотрены в моем коде.
Кроме того, я уверен, что функция .saveFile(filename)
должна выдавать ошибку из-за моей реализации. Когда я запускаю набор тестов, я получаю сбой теста, потому что он не выдал никакой ошибки, хотя в моем тесте я ожидал, что он выдаст.
Я почти уверен, что это связано с моей плохой реализацией асинхронного теста, но я не могу понять почему.
Комментарии:
1.Асинхронные функции всегда возвращают обещания, поэтому они не выбрасывают — вам нужно
expect(...).rejects...
или сделать тестовую функцию самойasync
, чтобы вы моглиexpect(await ...).toThrow...
. См. jestjs.io/docs/en/asynchronous .2. Я получил сообщение об ошибке:
expect(...).rejects is not a function
@jonrsharpe3. Это не функция, нет; вам нужно связать свои ожидания с этим. Посмотрите на примеры в связанных документах.