0

我一直在努力使用 ruby​​/rspec/capybara/devise 来测试我的代码。我正在尝试编写的一个简单测试是用于登录。我有一个有效的用户登录,并希望看到以下代码中定义的 h1 标记:

describe "Authentication" do

  subject { page }
  describe "with valid information" do
    let(:user) { FactoryGirl.create(:user) }
    before { sign_in_with user.email }

    it { should have_css('h1', text: "Welcome to the Test") }
  end
end

问题是我得到了这个作为回报:

1) Authentication signin page with valid information 
 Failure/Error: it { should have_css('h1', text: "Welcome to the Test") }
   expected css "h1" with text "Welcome to the Test" to return something
 # ./spec/requests/authentication_pages_spec.rb:34:in `block (4 levels) in <top (required)>'

有没有办法输出测试在 h1 中找到的内容(或者根本没有找到?)而不是没有找到预期的内容?我的 sign_in 方法很有可能不起作用,但我无法验证这一点,因为我不确定在 sign_in_with 执行后测试会看到什么。

谢谢,如果有帮助,很乐意提供更多背景信息。

编辑 更新代码以反映测试主题。

4

2 回答 2

1

...我不确定在 sign_in_with 执行后测试会看到什么。

您可以使用以下命令打开当前页面的快照save_and_open_page

describe "with valid information" do
  let(:user) { FactoryGirl.create(:user) }
  before { sign_in_with user.email }

  it { save_and_open_page; should have_css('h1', text: "Welcome to the Test") }
end
于 2013-04-08T07:59:50.023 回答
0

没有主题,不能it用来表示结果。对于 Capybrara,您需要检查page返回的对象。

让我们像这样重写测试:

describe "with valid information" do
  let(:user) { FactoryGirl.create(:user) }
  before do
    sign_in_with user.email
  end
  it "signs in successfully" do
    expect(page).to have_css('h1', text: "Welcome to the Test")
  end        
end

或者更好,使用 Capybara story DSL

feature "User sign in" do

  given(:user) { FactoryGirl.create(:user) }

  scenario "with valid information " do
    sign_in_with user.email
    expect(page).to have_css('h1', text: "Welcome to the Test")
  end        

  scenario "with invalid filing" do
    sign_in_with "foo@bar.com"
    expect(page).to have_text("Invalid email or password")
  end
end
于 2013-04-08T09:07:44.720 回答