Closed2
Rspec `to have changed from nil to be truthy, but did not change`
なにかしら(Service)を実行したらユーザーのとあるカラムにデータがセットされるはずだというテストを書きたかったが、変更がないよ(but did not change)と怒られる
service_hoge_spec.rb
expect{ @service_hoge.call }.to change{ @user.hoge }.from(nil).to(be_truthy)
→ expected `@user.hoge` to have changed from nil to be truthy, but did not change
service 内で以下の様な処理をしているが、
hoge_service.rb
user = User.find @user_id
user.hoge = Time.now
user.save!
User.find
の部分でテストしたいデータを取得できていなかったようで、(print した際同じデータが取れていたが...)
以下の様に書くと期待通りに動作した
allow(User).to receive(:find).and_return(@user)
expect{ @service_hoge.call }.to change{ @user.hoge }.from(nil).to(be_truthy)
→ 1 example, 0 failures
このスクラップは2021/06/22にクローズされました