こんにちは。
今年も残り1日。今年に悔いはない!来年よお主を待ている。
どうもハチマキです。
はじめに
rspecのテスト記述をしていて、ローカル環境ではテストが通るのに、Travis CIで落ちました。
この原因特定に結構時間をさいたので、誰かのソリューションになれば幸いです。
では早速行きましょう!
本日の概要 : expected: 1 got: 0の原因は「日付」の記述方法だった!
エラー例
#hoge.rb 省略 1.days == Date.today #こいつが原因でした #hoge_spec.rb Failures: 1) test内容 〇〇が送られること Failure/Error: expect(ActionMailer::Base.deliveries.size).to eq(1) expected: 1 got: 0 (compared using ==) # ./spec/hoge_spec.rb:41:in `block (4 levels) in <top (required)>'
原因
結論は、「日時の扱い方」でした。
日付の理解が低く、記述方法に誤りがありエラーが発生しました。
具体的には、Date.todayを使用して、データを取得しておりましたが、これが原因で発生したエラーでした。
解決方法
これ「Date.today」をこう「Date.current」です!これで解決に至りました。
#hoge.rb 1.days == Date.today #これをこうです 1.days == Date.current
いつも参考資料にさせていただいてる@jnchitoさんの記事に対象となる読者。
- Railsで Time.now と Time.current の違いがよくわかっていない人
完全に私でした(汗汗
下記の違いを理解していたら簡単に解決できた問題でした。
参考資料
RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita
すぐ忘れるので、RubyとRailsの日付操作周りについてまとめました - Qiita
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
日々勉強です。
以上、ハチマキでした。