我知道集成测试是首选,但我需要它在控制器测试中运行,我正在测试一个gem在视图中注入html代码,特别是xhr,所以这不能在功能规范中运行(如果可以,请解释我如何:))
因此,使用rspec控制器测试,您可以断言选择器存在(使用capybara):
response.body.should have_selector('#foobar')
has_selector?
将从capybara调用all
方法来查找选择器。
我想做的是获取body的最后一个子元素,然后断言它的id是特定的东西
我敢说,这是不可能做到这与have_selector。
我要做的是:
all('body:first-child').first.id.should == '#foobar'
然而,对于Capybara DSL,所有的定义都是这样的(或多或少):
def all(*args)
page.all(*args)
end
和页面将是空的,除非我使用visit
,但它是为集成规格。
如何在rspec控制器测试中使用capybara all
方法?
我现在不能测试它,但是在谷歌上搜索了一下之后,它似乎可以做到这一点
def page
Capybara::Node::Simple.new(response.body)
end
源