das*_*ots 1 capybara rspec2 ruby-on-rails-3
我在测试我的登录过程时遇到了一些困难。目前,我有以下请求规范:
describe "GET /admins" do
before(:each) do
@admin = Factory.create(:user, :winery => nil, :email => 'admin@example.com', :admin => true)
@attr = { :email => @admin.email, :password => @admin.password }
end
it "should log admin users in" do
visit admin_path
post_via_redirect admin_path, :session => @attr
save_and_open_page
page.should have_content('Admin Dashboard')
end
end
Run Code Online (Sandbox Code Playgroud)
这失败了,save_and_open_page只显示我的登录页面(我可以正常登录到我的开发站点,因此实际的代码有效)。我也尝试使用Capybara填写规格并填写表格,然后单击“登录”按钮,但同样失败。我已经能够用黄瓜写一个合格的规范,但是只能用硒。
使用:水豚(0.4.1.2)Rspec(2.5.0)rspec-rails(2.5.0)导轨(3.0.5)
谢谢
您应该在这里使用纯Capybara助手,这post_via_redirect是一种Rails方法。您首先要填写表单,然后按某种提交按钮,如下所示:
visit admin_path
fill_in "Login", :with => "username"
fill_in "Password", :with => "password"
click_button "Submit"
Run Code Online (Sandbox Code Playgroud)
您的最后一个断言是,我会更加精确地说出应该在哪个选择器中显示该内容,如下所示:
within_scope("h1") do
page.should have_content('Admin Dashboard')
end
Run Code Online (Sandbox Code Playgroud)
现在,您正在正确测试!