stub
stub
はメッセージを許可するための古い方法ですが、すべてのオブジェクトに対してグローバルなモンキーパッチを持っています。制約の設定や応答の設定に対しても同じ流暢なインターフェースをサポートしています。また、stub
にはメッセージ/戻り値のペアのハッシュを渡すこともできます。これはallow(obj).to receive_messages(hash)
のように動作しますが、流暢なインターフェースを通じたさらなるカスタマイズはサポートされていません。
背景
次の内容で「spec/spec_helper.rb」という名前のファイルがあるとします:
RSpec.configure do |config|
config.mock_with :rspec do |mocks|
mocks.syntax = :should
end
end
次の内容で「.rspec」という名前のファイルがあるとします:
--require spec_helper
メソッドをスタブ化する
次の内容で「spec/stub_spec.rb」という名前のファイルがあるとします:
RSpec.describe "Stubbing a method" do
it "configures how the object responds" do
dbl = double
dbl.stub(:foo).and_return(13)
expect(dbl.foo).to eq(13)
end
end
rspec spec/stub_spec.rb
を実行すると、
すべての例がパスするはずです。
ハッシュを渡して複数のメソッドをスタブ化する
次の内容で「spec/stub_multiple_methods_spec.rb」という名前のファイルがあるとします:
RSpec.describe "Stubbing multiple methods" do
it "stubs each named method with the given return value" do
dbl = double
dbl.stub(:foo => 13, :bar => 10)
expect(dbl.foo).to eq(13)
expect(dbl.bar).to eq(10)
end
end
rspec spec/stub_multiple_methods_spec.rb
を実行すると、
すべての例がパスするはずです。