#javascript #node.js #testing #jestjs #supertest
#javascript #node.js #тестирование #jestjs #супертест
Вопрос:
Я пишу тесты с помощью jest и supertest npm на сервере узлов.
когда я запускаю все тесты вместе, некоторые из тестов завершаются неудачно:
выбрав в терминале для запуска только неудачные тесты, запустите их, и они пройдут.
теперь, если я выберу в терминале повторный запуск всех тестов, все тесты пройдут, но будет показана следующая ошибка:
Смотрите использование: нажмите w, чтобы показать больше.(узел: 9484) Предупреждение о необработанном promiserejectionwarning
Я использую beforeEach()
для удаления базы данных и создания исходной базы данных, которая будет одинаковой для каждого теста.
это setUpDb()
:
const setUpDb = async () => {
await neo4jContext('MATCH (n) DETACH DELETE n')
await usersRepository.addUser(user1)
await usersRepository.addUser(user2)
await productsRepository.addProduct({ userId: user1.id, product: product1 })
await productsRepository.addProduct({ userId: user1.id, product: product2 })
await storesRepository.addStore({
userId: user1.id, store: store1, products: [product3]
})
await storesRepository.addStore({
userId: user1.id, store: store2, products: [product3]
})
}
//
beforeEach(setUpDb)
использование --runInBand
тестов выполняется последовательно, один за другим, поэтому не должно быть путаницы.
это конфигурация в package.json
"scripts": {
"start": "node src/index.js",
"debug": "env-cmd -f ./config/dev.env node inspect src/index.js",
"dev": "env-cmd -f ./config/dev.env nodemon src/index.js",
"test": "env-cmd -f ./config/test.env jest --watch --runInBand"
},
"jest": {
"testEnvironment": "node",
"testTimeout": 50000
}
Я попытался разобраться в этом, но все, что я нашел, это тесты, которые влияют на общее состояние, и поэтому при запуске в одиночку появляется другой результат.
Я не думаю, что это проблема здесь, потому что все вышеперечисленное.
спасибо всем, кто обращается!
Ответ №1:
это произошло потому, что у меня был тест с асинхронной функцией, и я не поставил await перед его выполнением:
it('should do something', async () => {
const asyncFunc = async () => console.log('async func needs await on exe')
//wrong
asyncFunc()
//right
await asyncFunc()
})