使用Capybara/RSpec测试链接的目标属性

Duc*_*ppy 19 rspec capybara

我对Rails/RSpec/Capybara有点新意,所以这可能是一个新手问题,但谷歌并没有像我希望的那样多.我希望我可以使用

it { should have_link('link text', href: 'url', target: '_blank') }
Run Code Online (Sandbox Code Playgroud)

为应该在新窗口中打开的链接编写测试,但这似乎不起作用.我也尝试用大括号包装选项哈希:

it { should have_link('link text', {href: 'url', target: '_blank'}) }
Run Code Online (Sandbox Code Playgroud)

无论实际页面和正在测试的链接中是否存在目标属性,测试都将始终成功.更改href属性确实会导致测试失败.我认为has_link的选项哈希是要测试的属性列表.显然我错了,但是测试单个链接的目标属性的最佳方法是什么?希望不要使用XPath搜索...

Sal*_*lil 27

我不确定为什么你的代码不起作用.你试过这个:

find_link('link_text')[:href].should == 'url'
find_link('link_text')[:target].should == '_blank'
Run Code Online (Sandbox Code Playgroud)


dgi*_*rez 11

使用新的rspec 3语法:

is_expected.to have_link('link_text', href: 'url')
expect(find_link('link_text')[:target]).to eq('_blank')
Run Code Online (Sandbox Code Playgroud)


Ada*_*ite 6

你可以这样做:

it { should have_css "a[href~='/somewhere'][target~='_blank']" }
Run Code Online (Sandbox Code Playgroud)