クラスがインスタンス化され、特定のメソッドが呼び出されることを期待できるように、クラスをモックしようとしています。
私は試した:
expect(MyPolicy).
to receive(:new).
and_wrap_original do |method, *args|
expect(method.call(*args)).to receive(:show?).and_call_original
end
しかし、私が得ているのは次のとおりです。
未定義のメソッド「show?」#RSpec::Mocks::VerifyingMessageExpectation:0x0055e9ffd0b530 の場合
ブロックを提供し、最初に元のメソッド (:new と :show? の両方、最初にバインドする必要がありました) を呼び出してみましたが、エラーは常に同じです。
については知ってexpect_any_instance_of
いますが、コードの匂いと見なされているため、適切に行う別の方法を見つけようとしています。
コンテキスト: 専門家のポリシーがあり、それが呼び出されたかどうかを確認したい
私も試しましたが、同じエラーが発生しました:
ctor = policy_class.method(:new)
expect(policy_class).
to receive(:new).
with(user, record) do
expect(ctor.call(user, record)).to receive(query).and_call_original
end