stub
スタブを使用することで、外部の依存関係を置き換えられる。
以下の例では、Nanoid.generate
を置き換えて、abc123
を返すようにした。
describe '#set_unique_id' do
let(:foo) { build(:foo) }
it 'sets the unique id using nanoid' do
allow(Nanoid).to receive(:generate).and_return('abc123')
foo.set_unique_id
expect(foo.unique_id).to eq('abc123')
end
end
mock
describe '#send_welcome_email' do
let(:user) { create(:user) }
it 'sends a welcome email' do
mailer = double('UserMailer')
expect(mailer).to have_received(:welcome_email).with(user).and_return(double(deliver_now: true))
expect(UserMailer).to have_received(:with).with(user: user).and_return(mailer)
user.send_welcome_email
end
end