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 문 return result.id
은 undefined method 'id' for nil:NilClass
이됩니다. FactoryGirl을 사용하여 새 레코드를 만들려고 했으므로이 오류 메시지가 표시되지 않습니다. 내가 RSpec에/레일에 새로운 오전으로이 올바른 방법입니다하지만 잘 모르겠어요
당신은 명확하게해야한다 모델 사양에 factoryGirl
create
기능을 확인하는 레일 모델에서 valid?을 사용할 수 있습니다 먼저 테스트하고 싶은 것. 당신의 상황에서 새로운 레코드를 테스트하기를 원한다면,'데이터베이스의 변화를 테스트하는 방법'을 생각해야합니다. 메소드에서 반환되는 값을 테스트하려면 다른 방법으로 생각하십시오. 새로운 질문을 시작하기 전에'factory-bot'의 문서 + google을 참조하십시오. – yeuem1vannam'FactoryBot' (이전의'FactoryGirl')이 왜 작동하는지 테스트하고 있습니까? 그들은 그들 자신의 시험을 가지고있다. 'FactoryBot'과 전혀 관계가없는'User # find_user_id' 메소드를 테스트하는 방법을 실제로 묻고 있기 때문에 질문의 제목은 몸체와 일치하지 않습니다. – engineersmnky