0

我有一个非常简单的 RSpec Capybara have_selector() 似乎没有工作,我不知道为什么......但可能很简单。

这是 RSpec 请求测试:

describe 'with valid information'
  let(:user) { FactoryGirl.create(:user) }
  before do
    fill_in 'Email', with: user.email
    fill_in 'Password, with: user.password
    click_button 'Login'
  end
  it { should have_selector('p', text: user.first_name) }
  ...
end

new.html.erb会话中,我只有这样的东西:

<% if logged_in? %>
  <p><%= current_user.first_name %></p>
<% else %>
  <%= form_for(:session, url: sessions_path) do |f| %>
  ...
<% end %>

登录表单session#new在浏览器中完美运行。我可以很好地登录,并且能够查看p标签中的名字。问题似乎是水豚部分,因为it检查h1页面上标签的其他测试(无论是否登录都存在)工作正常。

有谁知道是什么问题?

提前感谢您的帮助!!

4

2 回答 2

2

您的登录很可能由于某种原因而失败。

将您的测试更改为如下所示:

it "should show me my first name" do
  save_and_open_page
  should have_selector('p', text: user.first_name)
end

这将打开您的浏览器并向您显示测试浏览器当前看到的页面。(您可能需要将launchygem 添加到您的 Gemfile 中。)

还有一些其他的诊断可以帮助,例如,添加一个测试或一个puts检查你登陆的页面,例如:

it "redirects to the home page after log in" do
  current_path.should == root_path
end
于 2012-07-01T10:41:54.890 回答
0
fill_in 'Password, with: user.password

not like that. You should use this line,

fill_in 'Password', with: user.password
于 2012-07-01T10:48:08.000 回答