RSpec3から結構選択肢があるようなので一覧表にしてみる
環境
$ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18]
$ bundle exec rspec -v RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0
逆引き利用表
利用用途 | 使うマッチャ |
---|---|
配列の内容が順番含め一致するか | eq , match |
期待する値が配列に含まれているか | include |
順番は気にしないが、配列の中身が同じか | match_array |
指定する要素が配列にすべて含まれているか | contain_exactly |
異なるマッチャを使って検証したいか | match |
記述例
RSpec.describe "array_match_sample" do let(:demo_array) {[1, "example", variable]} let(:variable) {:symbols} it "eqで内容が==でtrueを返す状態であるかを確認する" do expect(demo_array).to eq([1, "example", variable]) end it "matchで同一なものかを確認する" do expect(demo_array).to match([1, "example", variable]) end it "includeで配列に含まれているかを検証する" do expect(demo_array).to include("example") expect(demo_array).not_to include("example2") end it "match_arrayで順番は気にせず同一の配列かを検証する" do expect(demo_array).to match_array(["example", 1, :symbols]) expect(demo_array).not_to match_array(["example", 1, :symbols, "huge"]) end it "contain_exactlyで指定した値がすべて含まれるかを検証する" do expect(demo_array).to contain_exactly("example", :symbols, 1) expect(demo_array).not_to contain_exactly("example", :symbols) end it "matchとコンポーザブルマッチャを使って型を検証する" do expect(demo_array).to match([be_kind_of(Integer), be_kind_of(String), be_kind_of(Symbol)]) end end