サービスクラスのRspecでインスタンス生成時に値を上書きできないことに悩んでいます。
どなたかご教授頂ければと存じます。
●やりたい事●
RspecでArticleサービスクラスのgetメソッドで
release_dateが現在日時以降 もしくはrelease_dateがnilの場合
値が取得できる事をテストしたい
rspecでArticleのrelease_dateが
1:nil
2:現在の日付以前
3:現在の日付より後
のデータを作成
■詰まっているところ■
以下コードでlet!でarticlesを生成した後に、Article.newでインスタンスを生成しています。
2つめのcontextでrelease_dateをnilにしたいのですが、release_dateを上書きする事ができません。
すいません、rspec自体あまり特異ではなく恐れ入りますが、ご教授頂ければと存じます
require 'rails_helper' RSpec.describe Article do let(:orgs) { create_list :organization, 10 } let!(:articles) { orgs.map {|org| org.create!( release_date: Date.yesterday, mail: Forgery::Email.address, )}} describe '#get' do context 'リリースが現在日時以前' do subject { Article.new.get } # ここで10件のrelease_date: Date.yesterdayが生成される it 'リリースがは対象外である事' do expect(subject.all.count).to eq 0 end end context 'リリースがnil' do subject { Article.new.get } # ここで10件のrelease_date:nilにデータを生成したい #しかしletだとrelease_dateを上書きできない it 'リリースがは対象である事' do expect(subject.all.count).to eq 10 end end end end
Article サービスクラス
class Article def get Article.where('release_date > ?', Date.today).or(Article.where(release_date: nil)) end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/08 00:19