ビューに機能があるかどうかを確認することが望ましいアプリを書いていますないいくつかの機能があります-特にその機能は特定のセキュリティグループのユーザーにのみ提示する必要があるためです。メニューがnotレンダリングされていることを確認するために、assert_selectsの反対を探しています。
こちらのドキュメントをご覧ください:
http://apidock.com/Rails/ActionController/Assertions/SelectorAssertions/assert_select
ドキュメントから:
assert_selectはassertion that selects elements and makes one or more equality tests.
および同等性テストのセクションから:
同等性テストは、次のいずれかになります。
true-少なくとも1つの要素が選択されている場合、アサーションはtrueです。
false-要素が選択されていない場合、アサーションはtrueです。
String/Regexp-少なくとも1つの要素のテキスト値が文字列または正規表現と一致する場合、アサーションはtrueです。
整数-正確にその数の要素が選択されている場合、アサーションはtrueです。
範囲-選択した要素の数が範囲に適合する場合、アサーションはtrueです。
同等性テストが指定されていない場合、少なくとも1つの要素が選択されていれば、アサーションは真です。
そして簡単な例:
# Page contains no forms
assert_select "form", false, "This page must contain no forms"
いつでもカウントを渡すことができ、それをゼロに設定できることを忘れないでください。
assert_select "a", {count: 0, text: "New"}, "This page must contain no anchors that say New"
多くのボタンのうち、「削除」ボタンがないことを確認するために、この問題が発生しました。すでにいくつかのボタンがあるため、受け入れられた回答はこの状況では機能しません。
assert_select '.button' do |btn|
btn.each do |b|
assert_no_match 'Delete', b.to_s
end
end
しかし、私はガントマンの答えが本当に好きです!
あなたは簡単にあなた自身を定義することができます:
module ActionDispatch::Assertions::SelectorAssertions
def refute_select(*a,&b)
begin
assert_select(*a,&b)
rescue AssertionFailedError
return
end
raise "fail" # there should be a better built-in alternative
end
end