在视图测试中,我想要执行以下操作(不完全是这样,但它解释了这一点):
within 'ul' do
it { should have_selector 'li', text: 'Some text' }
it { should have_selector 'li', text: 'Some other text' }
end
可悲的是,within
方法似乎仅在it
块中可用。
我可以将规范重写为以下内容:
it { should have_selector 'ul li', text: 'Some text' }
it { should have_selector 'ul li', text: 'Some other text' }
但这对我来说似乎是多余的。
那么:有没有办法为许多it
个例子指定上下文?
答案 0 :(得分:3)
不,你不能在it
之外使用Capybara逻辑。但是,您可以在单个it
中使用多个期望,如下所示:
it "should have selectors" do
within 'ul' do
should have_selector 'li', text: 'Some text'
should have_selector 'ul li', text: 'Some other text'
end
end
如果你真的需要/想要单独的it
块,那么一种方法是使用“共享示例”,尽管在这种特殊情况下这似乎有些过分。
答案 1 :(得分:1)
您可以使用subject
指定ul元素作为示例的上下文:
subject { page.find('ul') }
it { should have_selector 'li', text: 'Some text' }
it { should have_selector 'li', text: 'Some other text' }