dev/mom0tomo

技術メモ

Rspecで"You must pass an argument rather than a block...." エラー

読んだもの

www.d-wood.com

学んだこと

matcherにはブロックを受け取れるものとそうでないものがある。

例えば以下のように書くと表題のエラーになる。

    context 'とある場合' do
      it '名前がほげほげであること' do
        expect { described_class.new(user).name }.to eq "ほげほげ"
      end
    end
You must pass an argument rather than a block to use the provided matcher....

これはeqというmatcherはブロック {} を受け取れないというエラー。 下記のように引数にすることで実行できる。

    context 'とある場合' do
      it '名前がほげほげであること' do
        expect(described_class.new(user).name).to eq "ほげほげ"
      end
    end

何気なく他の部分のテストを真似るとときどきこのようなエラーを招くので気をつける。