레일스에서 서비스 오브젝트 클래스를 테스트하는 방법에 대해 궁금합니다. 사용자가 가입한다고 가정 해 보겠습니다. 사용자가 데이터베이스에서 생성되고 전자 메일 목록에 추가되며 다른 일이 발생합니다. 이걸 어떻게 시험해?서비스 클래스 테스트 - 레일
class UserRegistrar
def sign_up(user)
User.create(user) # or something to this effect
EmailMarketing.add_to_email_list(user)
SuperSecretClass.do_secret_stuff(user)
LoggingThing.new.log_stuff_about(user)
end
end
(컨트롤러 액션)
def create
UserRegistrar.sign_up(params)
# stuff for the strong params, etc...
end
난 그냥 방법이 올바른 인수라고되어 있는지 확인하는 것입니다 무엇. 메소드의 결과 (사용자가 실제로 목록에 추가되는지 확인하는 것과 같음)는 각각의 클래스에서 테스트됩니다. 내가 제대로하고 있니?
두 번째 사항에 동의합니다. 사실 나는 "메소드를 호출해야한다"(사용자가 만들어 졌는지, 사용자가 메일 링리스트에 추가되었는지)와 대조적으로 수락 테스트 만한다고 생각하고 있습니다. "내가이 방법을 호출 했는가"는 많은 가치가없는 것 같습니다 (무언가가 변경되었는지 확인하기 위해 무언가가 호출되었는지 확인). –
오른쪽, 메서드 호출 기대 값은 본질적인 값이 없습니다. 그것들은 테스트하기에는 비실용적 인 상태 변화를 시험하는 것만으로 충분합니다. –