Rails не может найти запись в БД (но она существует)

Например, я ищу что-то в БД, Model.find_by(slug: :name). И это работает нормально в местном env, но в тесте это дает мне ноль. (Я трижды проверил его, и есть запись в БД).

Я даже добавил debug для просмотра журналов. И когда я это делаюModel.where(slug: :name).count, он возвращает мне 0. Но запись действительно существует с этим именем слизняка.

Где я копаю, чтобы исправить это?

2 ответа

  1. При выполнении тестов Rails использует другую базу данных. Общее соглашение-projectname_development vs projectname_test (и, наконец, projectname_production).

    Обычно тестовые системы также очищают тестовую базу данных перед запуском теста. Это происходит по двум причинам:

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

    Необходимо настроить тестовые данные для каждого отдельного теста. Вы не упомянули, какую тестовую систему вы используете.

    Посмотрите на светильники и заводскую девушку .

  2. Данные, хранящиеся в базе данных тестирования, являются временными и удаляются после завершения тестирования.
    База данных разработки не зависит от базы данных тестирования.