Nano Hash - криптовалюты, майнинг, программирование

Как запустить несколько интеграционных тестов с использованием мокко рекурсивно, не объединяя их хуки?

Я сделал несколько интеграционных тестов с использованием мокко, которые отлично работают при независимом запуске, но когда я пытаюсь запустить их, используя: mocha test --recursively.

Поведение, которое я заметил здесь, заключается в том, что все хуки после (вероятно, и до) объединяются. Я бросаю свою базу данных в хук after каждого теста, поэтому я проверяю между тестами и могу найти данные из предыдущих тестов.

Это как-то проясняется после последнего теста.

Я уже пытался импортировать их в один файл, но даже это не поможет.

Вот мои крючки.

before(async () => {
    app.set('port', SERVER_PORT);
    server = http.createServer(app);
    server.listen(SERVER_PORT, () => console.log(`API running on localhost:${SERVER_PORT}`));

    // Initial feeding of the database
    await dookie.push('mongodb://localhost:27017/tests', SEEDDATA);

});


after(async () => {
    await mongoose.connection.db.dropDatabase();
    server.close();
    process.exit(0);
});

СПАСИБО


Ответы:


1

Используйте шутку, так как она предоставляет встроенную функциональность, которую вы ищете.

16.06.2020

2

Трудно сказать, что не так с вашими тестами, не изучив код поближе, поэтому я собираюсь высказать здесь несколько идей, которые приходят мне в голову, не гарантируя, что что-то поможет.

Вариант 1

Используйте beforeEach и afterEach, а не before и after. Это гарантирует, что ваш код очистки БД будет выполняться после каждого теста, а не после последнего теста в функциональном блоке describe. Подробности здесь.

Вариант 2

Вы запускаете свои тесты в нескольких потоках с помощью mocha-parallel-tests или какого-либо другого инструмента. Убедитесь, что тесты, в которых осуществляется доступ к БД, не распараллелены.

Вариант 3

Ваш вызов db.dropDatabase возвращается до того, как база данных будет фактически удалена, в то время как запрос все еще находится в состоянии ожидания. Вам нужно будет проверить настройки подключения или базы данных.


Если ничего не помогает, попробуйте вставить операторы журнала в начале каждого модульного теста и до/после хука, это поможет вам понять, когда код действительно запускается, и увидеть, что происходит в неправильном порядке.

25.07.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..