Minitest Fixture получает ошибку: не удалось найти пользователя с 'id' = - PullRequest
0 голосов
/ 18 мая 2018

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

Вот ошибка, которую я получаю:

ERROR["test_teacher_edits_public_objective", ObjectivesFormTest, 38.557620885781944]
 test_teacher_remove_seminar_from_objective#ObjectivesFormTest (38.56s)
ActiveRecord::RecordNotFound:         ActiveRecord::RecordNotFound: Couldn't find User with 'id'=522600246
        test/test_helper.rb:45:in `setup_users'
        test/integration/objectives/objectives_form_test.rb:10:in `setup'

tasks_form_test.rb

def setup
    setup_users()
    setup_seminars
    setup_objectives()
    setup_labels()
    setup_questions()

    @old_objective_count = Objective.count
end

test_helper.rb

def setup_users
  @admin_user = users(:michael)
  @teacher_1 = users(:archer)
  @other_teacher = users(:zacky)
  @unverified_teacher = users(:user_1)
  @teacher_3 = @teacher_1.school.teachers[3]
  @student_1 = users(:student_1)
  @student_2 = users(:student_2)
  @student_3 = users(:student_3)
  @other_school_student = users(:other_school_student)
  @student_90 = users(:student_90)
end

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

Основываясь на похожих вопросах, которые я видел в StackOverflow, я попытался сбросить и заново заполнить базы данных.Я сделал это как в среде разработки, так и с помощью ENV = "test"

Когда я помещаю вызов отладчика в метод setup_users, прохождение тестов показывает, что существует 135 пользователей, включая student_1.Неудачные тесты только показывают, что существует 35 пользователей.

Все эти неудачные тесты проходят, когда я запускаю их изолированно.

Заранее благодарим вас за понимание.

1 Ответ

0 голосов
/ 19 мая 2018

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

Несколько ссылок, которые более подробно объясняют проблему, а также решения (однако для RSpec minitest должен быть похожим)

http://www.virtuouscode.com/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/

(см. Примеры RSpec и minitest ниже)

https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-example

...