機能仕様で次のことを期待しています (かなり低レベルですが、それでも必要です)。
expect(Addressable::URI.parse(current_url).query_values).to include(
'some => 'value',
'some_other' => String
)
2 番目のクエリ値はあいまい一致であることに注意してください。これは、それが存在することを確認したいだけですが、これ以上具体的に説明することはできません。
これをカスタムマッチャーに抽出したいと思います。私はから始めました:
RSpec::Matchers.define :have_query_params do |expected_params|
match do |url|
Addressable::URI.parse(url).query_values == expected_params
end
end
しかし、これは私がそこを通り抜けることができないことを意味{'some_other' => String}
します。あいまい一致を使い続けるにinclude
は、カスタム マッチャーでマッチャーを使用する必要があります。
ただし、その中のものRSpec::Matchers::BuiltIn
はすべてプライベート API としてマークされており、Include
具体的には次のように文書化されています。
# Provides the implementation for `include`.
# Not intended to be instantiated directly.
だから、私の質問は: RSpec でサポートされているカスタムマッチャー内で組み込みマッチャーを使用していますか? どうすればいいですか?