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にクローズされました