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

部分的なダブル

verify_partial_doubles の設定オプションが有効になっている場合、object_double と同様に、引数とメソッドの存在チェックが 部分的なダブル に対しても行われます。これを設定することをおすすめしますが、特に理由がない限りデフォルトではオフになっています。これは後方互換性のためです。

既存のオブジェクトのダブル化

以下の内容を持つ "spec/user_spec.rb" という名前のファイルがあるとします:

class User
def save; false; end
end

def save_user(user)
"saved!" if user.save
end

RSpec.configure do |config|
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
end

RSpec.describe '#save_user' do
it 'renders message on success' do
user = User.new
expect(user).to receive(:wave).and_return(true) # Typo in name
expect(save_user(user)).to eq("saved!")
end
end

rspec spec/user_spec.rb を実行すると、

出力に "1 example, 1 failure" が含まれるはずです。