部分的なダブル
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" が含まれるはずです。