Использование NeDB для тестирования при использовании других БД в приложении FeatherJS - PullRequest
0 голосов
/ 04 октября 2018

Мне интересно, является ли обычной практикой использование базы данных в памяти для тестовой среды вместо MySQL (которая должна использоваться для разработки / производства).

Если это имеет смысл,как мне это настроить?

Я думаю, что могу создать config/test.json, как показано в их примере чата , но мой app.js все еще требует Knex.

СледуетЯ делаю что-то вроде

const knex = (NODE_ENV !== 'test') ? require('./knex') : undefined;

, а затем настраиваю его, только если knex !== undefined?

Если я это сделаю, все мои модели должны быть настроены дважды (один раз для Knexодин раз для тестирования без него.

Каков правильный / стандартный способ сделать это?

РЕДАКТИРОВАТЬ:

Как предлагается ниже, я использую другую схему длятестирование.Это делается путем объявления другой строки подключения в config/test.json.

Этот вопрос решен, спасибо!

1 Ответ

0 голосов
/ 08 октября 2018

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

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

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

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

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

...