Ruby on rails 在控制器规范中,如何在生成的视图中查找特定标记?

Ruby on rails 在控制器规范中,如何在生成的视图中查找特定标记?,ruby-on-rails,ruby,rspec,capybara,rspec-rails,Ruby On Rails,Ruby,Rspec,Capybara,Rspec Rails,我知道集成测试是首选,但我需要在控制器测试中运行此测试,我正在测试视图中注入html代码的gem,尤其是使用xhr,因此无法在功能规范中运行此测试(如果可以,请向我解释如何:) 因此,通过rspec控制器测试,您可以断言存在选择器(使用capybara): has\u selector?将从capybara调用all方法来查找选择器 我想做的是获取body的最后一个子元素,然后断言它的id是特定的东西 好吧,用have_选择器是不可能做到这一点的 我要做的是: all('body:first-c

我知道集成测试是首选,但我需要在控制器测试中运行此测试,我正在测试视图中注入html代码的gem,尤其是使用xhr,因此无法在功能规范中运行此测试(如果可以,请向我解释如何:)

因此,通过rspec控制器测试,您可以断言存在选择器(使用capybara):

has\u selector?
将从capybara调用
all
方法来查找选择器

我想做的是获取body的最后一个子元素,然后断言它的id是特定的东西

好吧,用have_选择器是不可能做到这一点的

我要做的是:

all('body:first-child').first.id.should == '#foobar'
然而,对于水豚DSL,所有的定义都是这样的(或多或少):

除非我使用
visit
,否则页面将为空,但它是用于集成规范的


如何在rspec控制器测试中使用capybara
all
方法?

我现在无法测试它,但在谷歌搜索之后,似乎这就可以了

def page
  Capybara::Node::Simple.new(response.body)
end

def all(*args)
  page.all(*args)
end
def page
  Capybara::Node::Simple.new(response.body)
end