이것은 기술적 인 질문만큼 프로그래밍 연습 문제라고 생각합니다.rspec에서 가입 검증을 테스트하는 방법은 무엇입니까? (레일 튜토리얼 챕터 7 연습)
Ruby on Rails 튜토리얼을 읽고 있는데 질문 2 인 Chapter 7 Exercises까지입니다.이 질문은 유효하지 않은 사용자의 오류 메시지가 다시로드 된 가입 페이지에 표시되는지 확인하는 테스트를 작성하도록 요청합니다 (예 : 빈 암호, 유효하지 않은 이메일 주소).
나는 충분히 잘 작동 몇 가지 코드를 가지고 있지만 실제로 무엇을 테스트하고 있습니다 생각하지 않습니다. 로그인 페이지에 빈 사용자를 수동으로 입력했을 때 나타나는 오류 메시지의 존재 여부를 간단히 테스트했습니다. 당연히 테스트가 통과합니다. 단순히 오류 메시지를 복사하여 테스트에 붙여 넣었습니다!
의 관련 부분 내 user_pages_spec.rb
있습니다
describe "signup" do
before { visit signup_path }
let(:submit) { "Create my account" }
describe "with invalid information" do
it "should not create a user" do
expect { click_button submit }.not_to change(User, :count)
end
describe "after submission" do
before { click_button submit }
it { should have_selector('title',text: 'Sign up') }
it { should have_content('error') }
it { should have_content('Password digest can\'t be blank') }
it { should have_content('Name can\'t be blank') }
it { should have_content('Email can\'t be blank') }
it { should have_content('Email is invalid') }
it { should have_content('Password can\'t be blank') }
it { should have_content('Password is too short (minimum is 6 characters)') }
it { should have_content('Password confirmation can\'t be blank') }
end
end
이 그것을 할 올바른 방법인가? 오류 메시지/번역이 무엇인지 Ruby에 알려주지 않아야합니까? 암호 길이와 같은 유효성 검사 조건 중 하나를 변경하면 어떻게됩니까? 마찬가지로 암호 다이제스트에 대한 오류 메시지를 수정하면 테스트 파일을 변경해야합니까?
편집 : 내가 정확한 오류 문자열이 될 것입니다 무엇 무엇을 모른다면? Ruby가 테스트에 오류 메시지를 알려주지 않아야합니까? 'have (x) .errors_on'을 사용해야합니까?. 사용자가 사용자 이름이 아닌 암호를 삽입한다면
감사합니다. 내 문제는 테스트하는 방법보다는 테스트하는 방법입니다. Ruby에서 정확한 오류 문자열을 알 수없는 경우 어떻게해야합니까? 제공 한 [readme] (https://github.com/bbatsov/rails-style-guide#rspec)는'have (x) .errors_on'을 사용하여 언급합니다. 이런 종류의 직업이나 다른 무언가입니까? (질문이 업데이트 됨) – Lindsayts
@Lindsayts 답변을 업데이트했습니다. – jason328
고마워, 정확히 내가 알고 싶었던 것! – Lindsayts