前提・実現したいこと
下記のテストデータを定義しています。
./spec/factories/organizations.rb
ruby
1FactoryBot.define do 2 factory :organization do 3 name { 'organization A' } 4 started_at { Time.current } 5 end 6end
./spec/factories/members.rb
ruby
1FactoryBot.define do 2 factory :member do 3 organization 4 user 5 type { :member } 6 end 7end
./spec/factories/users.rb
ruby
1FactoryBot.define do 2 factory :user do 3 name { 'my name' } 4 sequence(:email) { |n| "test#{n}@example.com" } 5 end 6end
RSpec側で呼び出す時、Organization の started_at を個別に設定したいです。
発生している問題・エラーメッセージ
Rails c -s にて下記を実行しました。
zsh
1org = FactoryBot.build(:organization, started_at: '2021-04-01') 2member = FactoryBot.create(:member, organization: org) 3member.organization.started_at
ここでは想定通り下記の結果が得られました。
zsh
1Thu, 01 Apr 2021 00:00:00.000000000 UTC +00:00 2
同様の実装をRSpec内で行いたいのですが、factories内で定義している「Time.current」をオーバーライドできず、現在時刻を取得してしまっています。
該当のソースコード
ruby
1let(:org) { build :organization, started_at: '2021-04-01' } 2let(:member) { build :member, organization: org } 3let(:user) { member.user } 4. 5. 6. 7#RSpec実行後、StartedAtには現在時刻を取得してしまっている
解決のためアドバイスをいただけませんでしょうか。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/06/09 12:35
2021/06/09 12:39