Для проекта meteor с машинописью и реакцией я использую тестирование nightwatch , которое отлично работает:
https://github.com/arichter83/meteor-react-typescript-nightwatch
a.) Проверка результатов базы данных через клиента
Теперь я хочу проверить в базе данных , успешно ли тест end2end добавил данные, и это оказалось удивительно трудным. Я могу пройти через клиента и посмотреть в Mongo.Collection
(на github ):
browser
.execute(function() {
return (Meteor as any).connection._stores['links']._getCollection()
.insert({title:"new link"})
}, [], (result) => {
const newid = result.value
browser
.assert.containsText('#' + newid, 'new link')
.execute(function(newid) {
return (Meteor as any).connection._stores['links']._getCollection()
.remove({_id: newid})
}, [newid], () => {
browser
.assert.elementNotPresent('#' + newid)
})
})
При таком подходе довольно сложно использовать мои существующие модели и взаимодействовать с Nightwatch.
b.) Проверка результатов базы данных в тесте
Но я бы вместо этого использовал nightwatch
возможность модульного теста между ними, но из документов кажется, что E2E и модульные тесты не могут быть смешаны.
Кроме того, когда импортирует мои модели в тесте на сервере:
import { Links } from '../../imports/api/links'
console.log(Links.findOne())
Typescript выдает ошибку, что он не может разрешить пакет атмосферы meteor/mongo
- так что @types/meteor
, кажется, не загружен (вероятно, для метеора):
Cannot find module 'meteor/mongo'
Вопросы
- Обычно рекомендуется проверять результаты базы данных для тестов E2E?
- Какой самый элегантный способ сделать это с Nightwatch (+ метеор)? (Я также создал Запрос функций там )
- Как использовать метеорные библиотеки в ночных часовых тестах?