У меня есть следующие спецификации:Капибара утверждения разрушаться под Полтергейст
# MUST BE TESTED WITH JAVASCRIPT. As you can see before, it is allowing
# the Log Out link. On a real page, that element is hidden.
it "logs out a user" do
user = login_user
click_link user.email
click_link "Log Out"
assert page.has_content?('Logged out')
assert page.has_content?('Company Profile')
end
Мой login_user
метод в моем spec_helper.rb
файл и выглядит следующим образом:
def login_user(admin = false)
user = FactoryGirl.create(:user, :admin => admin)
visit login_path
fill_in 'Email', :with => user.email
fill_in 'Password', :with => user.password
click_button 'Go'
assert page.has_content?('Logged in')
user
end
Это последнее assert
терпит неудачу, когда я добавить , js: true
к моя спецификация.
И когда я делаю save_and_open_page
прямо перед ним, Up приходит страница с нулевым CSS и, по-видимому, без JS с тех пор. По какой-то причине он не читает активы. Я думал, что когда вы запускаете тесты, он будет читать активы так же, как в режиме разработки. Мне действительно нужна помощь.
Сообщение об ошибке, пожалуйста? Вы используете Devise? Или ваш метод удаления сеанса #? –
Нет сообщения об ошибке, если я не добавлю его к утверждению. Утверждение не выполнено. Он не может найти «Записан» на странице, когда я включаю: js => true. Если я оставлю это, все будет хорошо. В Полтергейсте есть что-то, что заставляет Capybara не читать страницу. – AKWF
Я бы предложил вам использовать предпочтительный синтаксис Capybara/Rspec в тестах интеграции. Вместо 'assert' вы можете использовать' page.should have_content ('Logged in') '. Я не знаю подробностей, но всегда получаю полезные сообщения об ошибках в Rspec. –