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

カピバラのhave_selectorマッチャーは、オプション:textではなく、オプションを取ります:content

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

このディスカッションとgithubのこのディスカッションを参照してください。

ただし、オプションが無視され、より寛容:contentな場合はテストを行う必要があるため、仕様が失敗する理由は説明されていません。

このテストが失敗する最も可能性の高い理由は、コントローラースペックから呼び出されていることです。この場合、rspec-railsはレールが実際にビューをレンダリングできないため、応答は空白になります。この場合、specをspec / requests /の下のファイルに移動するか、ブロックrender_views内にディレクティブを追加する必要があります。describe

それが機能しない場合は、仕様のコンテキストに関する詳細情報を提供する必要があります。そうしないと、何が問題になっているのかを理解するのが困難になります。

于 2012-10-09T14:39:15.587 に答える
2

<meta>タグをアサートするには:

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

<title>カピバラには、マッチャーが組み込まれています。

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