3

我正在尝试编写一个单元测试来断言一些元标记值(在响应部分下)。如何使用属性标签检查单个值?前任:

<meta property="keyword" content="site keywords" />
<meta property="description" content="site description" />

到目前为止,这就是我所得到的。但它以失败告终。

it "should check meta fields" do
  get :show, {:format => 'html' }
  r = response.body
  r.should have_selector('meta', :content => @site.title)
end
4

2 回答 2

4

Capybara 的have_selector匹配器有一个选项:text,而不是:content

r.should have_selector('meta', :text => @site.title)

请参阅此讨论和github 上的此讨论。

但是,这并不能解释为什么您的规范会失败,因为该:content选项被忽略了,如果有任何宽松的情况,应该让您的测试。

此测试失败的最可能原因是它是从控制器规范调用的,在这种情况下响应将为空白,因为 rspec-rails阻止 rails 实际呈现视图。如果是这种情况,您需要将规范移动到规范/请求/下的文件中,或者将指令添加render_viewsdescribe块内。

如果这不起作用,那么您必须提供有关规范上下文的更多信息,否则很难弄清楚出了什么问题。

于 2012-10-09T14:39:15.587 回答
2

断言<meta>标签:

have_selector 'meta[property=keyword][content="site keywords"]', visible: false

对于<title>Capybara 有一个内置的匹配器:

have_title 'The title of my website'
于 2021-01-29T13:54:53.987 回答