🖥

Rspec 3.6 | インスタンスのモック

2023/08/26に公開

モックの生成

instance = instance_double('TestClass', some_method: 'return message!')

instance.some_method # "return message!"

クラスに特定の引数を与えた時のインスタンスをモックする

Class

class SomeClass
  def some_method
    "original message!"
  end
end

SomeClass.new.some_method
# => "original message!"

Rspec

元の呼び出しは NoMethodError になってしまうようだ。

allow(SomeClass)
  .to receive(:new)
  .with(:specified_arg)
  .and_return instance_double('TestSomeClass', some_method: 'mocked message!')

SomeClass.new(:specified_arg).some_method
# "mocked message!"

SomeClass.new.some_method
# "NoMethodError: undefined method `some_method'"

環境

  • rspec (3.6.0)
  • rspec-mocks (3.6.0)

参考

https://relishapp.com/rspec/rspec-mocks/docs

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2017-09-22

Discussion