前提・実現したいこと
Rspecによる例外の発生
if文
のupdate!
メッソドのをテストしたい(falseにしたい)
発生している問題・エラーメッセージ
テストコードにてif tenant.update!(suspended: true)
の結果をfalse
にしたいのですが手こずっています
該当のソースコード
ruby
1 def hoge 2 tenant = Tenant.find_by(name: tenant_name) 3 if tenant.update!(suspended: true) 4 [true, "Tenant #{tenant_name} suspended", tenant] 5 else 6 [false, "Tenant #{tenant_name} failed to suspend", nil] 7 end 8 end
rspec
1 describe 'suspend_tenant' do 2 subject { Tenant.suspend_tenant(tenant_name) } 3 before do 4 create(:tenant, name: tenant_name) 5 end 6 context '正常なとき' do 7 省略 8 end 9 # 問題の箇所 10 context '例外' do 11 before do 12 allow(Tenant).to receive(:update).and_return(false) 13 end 14 it 'エラーを出すこと' do 15 is_expected.to eq(false, "Tenant #{tenant_name} failed to suspend") 16 end 17 end 18 end
試したこと
モックなどで実装するのではないかと考え上記のような実装をしてもエラー(下記)をはかれてしまいます。
1) Tenant suspend_tenant 異常なとき エラーを出すこと Failure/Error: expect { subject }.to raise_error(false, "Tenant #{tenant_name} failed to suspend") expected false with "Tenant テナント名 failed to suspend" but nothing was raised
あなたの回答
tips
プレビュー