FactoryGirlを使用してUser.find_user_id
クラスメソッドのテストを作成するにはどうすればよいですか?RSpecのFactoryGirlを使って新しいレコードが作成されたかどうかをテストするには?
Class User < ActiveRecord::Base
def self.find_user_id (name)
result = User.find_or_create_by(name: name)
return result.id
end
end
編集:私は自分自身を初めてはっきりさせませんでした。私がテストで望むのは、User.find_user_id
と呼ぶと、User.find_or_create_by
という行がヒットしたということだけです。
私はexpect(User).to received(:find_or_create_by)
を使用しましたが、result = nil
となり、返信文return result.id
はundefined method 'id' for nil:NilClass
というエラーになります。 FactoryGirlを使って新しいレコードを作成しようと考えていたので、このエラーメッセージが表示されませんでした。私はRSpecの/ Railsのに新しいです、これは正しいアプローチである場合しかし、私はよく分からない
をvalid?を使用することができますあなたは明確にすべきあなたが最初にテストしたいもの。あなたの状況では、新しいレコードをテストする場合は、 'データベースの変更をテストする方法'について考える必要があります。メソッドから返されるものをテストする場合は、別の方法で考えてください。新しい質問を始める前に 'factory-bot'の文書+ googleを参照してください。 – yeuem1vannam
'FactoryBot'(以前は' FactoryGirl')が動作するのはなぜテストしていますか?彼らは独自のテストをしています。あなたが 'FactoryBot'と全く関係ない' User#find_user_id'メソッドのテスト方法を実際に尋ねているので、質問のタイトルはボディに一直線に並んでいません – engineersmnky