1. ホーム
  2. ruby-on-rails

[解決済み] RSpec: メソッドが呼び出されたかどうかをテストするには?

2022-07-20 08:40:28

質問

RSpecのテストを書いていると、テストの実行中にメソッドが呼び出されたことを確認するために、次のようなコードをたくさん書いていることに気づきます(議論のために、メソッドが実行する操作が効果を見るのが簡単ではないので、呼び出し後のオブジェクトの状態を実際に照会することができないとだけ言っておきましょう)。

describe "#foo"
  it "should call 'bar' with appropriate arguments" do
    called_bar = false
    subject.stub(:bar).with("an argument I want") { called_bar = true }
    subject.foo
    expect(called_bar).to be_true
  end
end

私が知りたいのは これより良い構文があるのでしょうか?上記のコードを数行に減らすことができるような、RSpecの素晴らしい機能を私は見逃しているのでしょうか? should_receive はこれを行う必要があるように思えますが、さらに読むと、それは正確に何をするものでもないようです。

どのように解決するのですか?

it "should call 'bar' with appropriate arguments" do
  expect(subject).to receive(:bar).with("an argument I want")
  subject.foo
end