ユーザーモデルのクラスメソッド#registered_but_not_logged_in(email)
をテストしようとしていますが、これはconfirmed_at
というエントリを持つ電子メールにマッチする最初のユーザーですが、私はsign_in_count
と数える)。私はFactorygirlとrspecを使用しています。さらに、shoulda-matchers v2.8を使用しています。ここでrspecでモデルインスタンスを返すクラスメソッドをテストする方法
はRubyの:
def self.registered_but_not_logged_in email
self.with_email(email).confirmed.never_signed_in.first
end
私はRailsのコンソールでこれをテストしてみたし、それがその端にロジックの問題ではないですので、私は期待どおりに動作します知っているので、私は私がやっていると思っています私のテストで何かが間違っています:
describe User do
# create @user
describe ".registered_but_not_logged_in" do
it "returns a user that matches the provided email who is confirmed, but who has not yet signed in" do
@user.confirmed_at = 2.days.ago
@user.email = "[email protected]"
result = described_class.registered_but_not_logged_in("[email protected]")
expect(result).to be_instance_of(User)
end
end
この例では、result
はnilです。私はこれが@user
データベースの外部に存在することを知っていますが、メソッドはDBを積極的にチェックしていますが、rspec/factorygirlを使用してこれを処理する方法はわかりません。どんな助けでも間違いなく感謝しています!
変更を永続化するためにおそらく '@ user.save'が必要です - 実装はデータベースに行き、メモリ内の変更をスキップします – nort
@nort' @ user.save'を追加しても、残念なことに変更はありません。 'result'はまだゼロです。 – octopushugs