Я запускаю свои тесты для приложения рельсов, используя test / unit и capybara.Я довольно плохо знаком с рельсами, поэтому я надеюсь, что мне не хватает чего-то очевидного.У меня есть следующий интеграционный тест, чтобы заполнить одно поле и отправить форму.Это работает, как и ожидалось, и тест проходит успешно:
test "create post with title only should add post" do
assert_difference('Post.count') do
visit '/posts/new'
fill_in :title, :with => "Sample Post"
click_button 'create Post'
end
assert current_path == post_path(Post.last)
assert page.has_content?("Sample Post")
end
Я добавил второй тест, который в значительной степени копирует предыдущий тест, но также заполняет второе поле и проверяет дополнительный ввод (это не удается).
test "create post with title and body should add post" do
assert_difference('Post.count') do
visit '/posts/new'
fill_in :title, :with => "Testing"
fill_in :body, :with => "This is a sample post"
save_and_open_page
click_button 'create Post'
end
save_and_open_page
assert current_path == post_path(Post.last)
assert page.has_content?("Testing")
assert page.has_content?("This is a sample post")
end
Когда это не удалось, я добавил вызов:
save_and_open_page
и обнаружил, что форма заполняется значением заголовка из предыдущего теста, и значение тела не указываетсясовсем.Название теста и утверждения соответствуют второму тесту, так что это не случай ошибочной идентификации.Похоже, что Капибара не получает обновленные значения.У меня также есть этот код в моем файле test_helper.rb:
DatabaseCleaner.strategy = :truncation
module ActionController
class IntegrationTest
include Capybara::DSL
self.use_transactional_fixtures = false
teardown do
DatabaseCleaner.clean
Capybara.reset_sessions!
Capybara.use_default_driver
end
end
end
Я предполагаю, что это должно очистить значения между тестами.Поскольку этого явно не было, я также попытался добавить вызов в Capybara.rest_sessions!в конце первого теста, и это не помогло.
Буду очень признателен за любой совет или помощь.