Использование
Проблема: У меня есть тестовые данные, которые используются совместно с файлами системных тестов и, следовательно, неудачные тесты. Когда я запускаю файлы системного теста по отдельности, тесты проходят, но это неудобно.
Я использую конфигурацию системного теста из коробки, как в application_system_test_case.rb
Это мой сценарий тестирования системы. У меня есть 3 Customers
в customers_system_test.rb
файле и 1 Customer
(пока) в job_description_system_test.rb
Клиент 1 появляется в customers_system_test.rb
тестовых снимках экрана с ошибкой, которые Rails предоставляет для удобства.
Примечание: все 3 неудачных теста касаются количества записей, например assert_equal Customer.count, 3
3 неудачных теста
test "visit create customer and navigate back" do
...
assert_equal Customer.count, 3
end
test "cancel destroying a customer" do
assert_equal Customer.count, 3
...
end
test "destroy a customer" do
assert_equal Customer.count, 3
...
end
Интересно, что у меня была такая же проблема с тестовыми данными, которые не очищались при запуске rails test
для контроллера, интеграционных тестов и т. Д. c: способ, которым я обхожу, заключается в добавлении следующего фрагмента в test_helper.rb
:
(ActiveRecord::Base.connection.tables - %w{schema_migrations}).each do |table_name|
ActiveRecord::Base.connection.execute "TRUNCATE TABLE #{table_name} CASCADE;"
end
Не работает для системных тестов
Я чувствую, что упускаю очевидное?
test_helper.rb
require "simplecov"
SimpleCov.start "rails"
ENV["RAILS_ENV"] ||= "test"
require_relative "../config/environment"
require "rails/test_help"
class ActiveSupport::TestCase
include FactoryBot::Syntax::Methods
include Warden::Test::Helpers
# Run tests in parallel with specified workers
# parallelize(workers: :number_of_processors)
parallelize(workers: 1)
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
# fixtures :all
# Add more helper methods to be used by all tests here...
include Devise::Test::IntegrationHelpers
end
(ActiveRecord::Base.connection.tables - %w{schema_migrations}).each do |table_name|
ActiveRecord::Base.connection.execute "TRUNCATE TABLE #{table_name} CASCADE;"
end