0

我在 requests/pages_spec.rb 下有这两个测试

pages_spec.rb

require 'spec_helper'

describe "Pages" do
    subject { page } 
    before { visit root_path }

    describe "Home page" do
        it { should have_selector('a', text: 'Post your property')}
        it { should have_link('Post your property', href: new_apartment_path)}
    end
end

第一个测试通过,第二个测试失败说:

expected link "Post your property" to return something

这是html:

<a href="/en/apartment/new">Post your property</a>

知道为什么测试失败了吗?谢谢!乌里

4

2 回答 2

1

也许你的上下文should have_link是错误的。您可以save_and_open_page像下面的代码一样使用 capybara gem 对其进行测试,并在该测试点检查 html。

require 'spec_helper'

describe "Pages" do
    subject { page } 
    before { visit root_path }

    describe "Home page" do
        it { should have_selector('a', text: 'Post your property')}
        save_and_open_page
        it { should have_link('Post your property', href: new_apartment_path)}
    end
end
于 2013-10-08T11:05:11.500 回答
0

谢谢您的帮助!这就是最终解决它的原因:

问题在于命名路由 new_apartment_path 由于 i18n 而未被识别。

解决它的是添加以下行:

let(:locale) { 'en' } 

并将测试更改为:

it { should have_link('Post your property', href: new_apartment_path(locale))}
于 2013-10-08T14:56:12.253 回答