2009-02-09 4 views
0

내가 이해하는데 어려움을 겪고 있다는 시험에 실패했습니다. Test :: Unit을 Shoulda 향상 기능과 함께 사용하고 있습니다. "< 302>> 성공, 그러나이었다 응답이 <로"users_controller.rb의 조치 나 때문에 왜이 컨트롤러 테스트에서 생성 작업이 실패합니까?

context 'on CREATE to :user' do 
    context 'with invalid email' do 
    setup { post :create, { 'user[email]' => '[email protected]' } } 
    should_respond_with :success 
    end 
    # ... 
end 

실패

def create 
    unless params[:user][:email] =~/specific regex needed for this app /i 

    # ... 

    render :template => 'sessions/new' 
    end 
end 

테스트 ... 테스트하기 위해 노력하고있어. 302는 어때?

변경 조치를 ...

def create 
    render :template => 'sessions/new' 
end 

테스트가 계속 실패.

답변

1

@Ola : 틀렸어 : POST가 연결되었습니다. PUT은 일반적으로 업데이트에 연결됩니다.

A : 금단은 조용합니다. 여기에 (내가 진작을 사용한 적이 있지만, 나는 그것이 진작에 문제가 있다고 생각하지 않는 문제를 찾기 위해 몇 가지 제안 사항입니다.

  1. 이 경로가 설정/routes.rb에 정의되어 있는지 확인하고 레이크 노선
  2. 확인 당신이 (등 로그인 필터, acts_as_authenticated ..) 그 행동? 체크 아웃 로그/test.log에 대한 책임을 질 수 있습니다. 필터 체인의 중단이 나타납니다 어떤 before_filters이 있습니까.
  3. 응답 본문을 인쇄하십시오. 은 응답을 받았습니다. 반환 된 내용을 확인하십시오.

희망이 있습니다.

-1

기본 REST-ful URL을 사용하는 경우 POST가 아닌 PUT을 사용해야합니다. PUT이 만들기에 연결되어 있으므로 해당 URL에 POST하면 권한이 부여되지 않고 리디렉션됩니다.

+0

정말인가요? route에서 Rails는 "POST/users {: controller =>"users ", : action =>"create "}"를 생성했습니다. 그래도 시도 게시물. 같은 테스트 실패. – Ethan

+0

PUT은 확실히 업데이트 용이고 POST는 확실히 생성 용입니다. – brad

관련 문제