メインコンテンツまでスキップ

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を実行すると、

すべての例がパスするはずです。