我想改进以下代码块以使其更具可读性/简洁性/ DRY(我的实际参数对#have_css
来说有点复杂):
negate ? expect(page).to(have_css('selector', text: 'text')): expect(page).to_not(have_css('selector', text: 'text'))
是否有将'selector', text: 'text'
存储在变量中以作为方法参数重用?
或者是否有一些特殊技巧我只能根据我的negate
布尔值调用正确的匹配器?也许类似于
expectation = negate ? :should_not : :should
page.send(expectation, have_css('selector', text: 'text'))`
但使用新的Rspec期望语法?
答案 0 :(得分:2)
您可以将参数存储在数组中多次使用,然后将它们展开(*
)到参数列表中:
css_args = ['selector', {text: 'text'}]
expect(page).to(have_css(*css_args))
你也可以选择negate
匹配你的匹配器:
expectation = negate ? :to_not : :to
expect(page).send(expectation, have_css('selector', text: 'text'))