我想检查点击“登录”按钮后是否加载了正确的页面。如何检查按钮正确点击后的页面内容?
users_spec.rb
before :each do
user = User.create(:email => '[email protected]', :password => '123')
end
it "signs me in" do
visit '/users/sign_in'
within("#new_user") do
fill_in 'Email', :with => '[email protected]'
fill_in 'Password', :with => '123'
click_button 'Sign in'
end
expect(page).to have_content '#{user.name}'
end
指望(页)。为了have_content '主页' 检查是否有相同的页面,在那里的形式位于user.name字。那么,click_button有什么意义呢?如何使它检查页面上的内容,应该在click_button之后加载?顺便说一下,如何正确命名这些测试? 对不起,如果这是一个愚蠢的问题,我是rspec的新手:c
谢谢!
如果我写expect(页面).to has_content(“您现在已登录”),即使有dusc消息,测试也不会通过。但是,只有当我检查sign_in表单所在内容的smth时,测试才会通过。这不一定是关于user.name。如果登录后在页面上显示“Hello”,则在sign_in表单所在的页面上没有该单词的情况下,expect(page).to has_content(“Hello”)不会通过。这就是问题所在,我不明白为什么要使用button_click,如果测试不能在页面上工作,这个按钮是指或者我做的是错误的( – Jakov
)你正在做的事情是错的 - 要么这个应用程序不是真的单击按钮时登录,或者您没有检查下一页上存在的文本 - 您的测试日志应该会显示实际请求。由于您是rspec和capybara的新手,我假设您使用机架测试驱动程序,它没有JS的支持 - 你的应用程序实际登录如果JS被禁用或需要JS的工作 - 如果是这样你需要使用其中一个Capybaras其他驱动程序 –