2009-02-09 1 views
20

Test :: Unit 및 Shoulda로 작업하기. 시험을 시도 중 Users.create. 나의 이해는 레일 형태의이 같은 개체에 대한 PARAMS를 보낼 것입니다 :레일스 테스트에서 POST 매개 변수를 어떻게 지정합니까?

바로, 당신의 행동에 해시로 변신
user[email] 

?

params[:user][:email] 

확인, 내 테스트에서 내가 시도했습니다 ... 그래서

setup { post :create, :post => { 'user[email]' => '[email protected]' } } 

이상 내 행동 두 경우 모두

setup { post :create, :post => { :user => { :email => '[email protected]' } } } 

, params[:user]는 전무하다.

def post(action_name, params_hash = {}, session_hash = {}) 

그리고 테스트에서

에서, PARAMS 해시가 직접 컨트롤러 액션의 params로 보내지는 다음과 같이

답변

43
post :create, :user => { :email => '[email protected]' } 

, 넣어, 게시, 얻을 삭제의 모든 시험 방법의 일반적인 형태는 어떤 종류의 번역도 없습니다. 심지어 통합 테스트를 수행해도 레일 프레임 워크 테스트에서이 문자열을 params 번역으로 테스트해야합니다. params가 필요로하는 모든 테스트 방법은 이러한 방식으로 해시를 수락하여 불만 사항없이 쉽게 처리 할 수 ​​있습니다. [: 포스트이 경우 PARAMS에서

+0

이 또한 거 작업입니다 @ bar.com '} "을 입력하고 컨트롤러 측에서 다음과 같이 입력하십시오 : params [: email]는'[email protected] ' – nisevi

6
post :create, {:post => {}, :user => {:email => '[email protected]'} }

는 {} PARAMS [: 사용자]된다 {이메일 => 'ABC에서 @의 ABCD'} PARAMS [: 사용자가 [메일]는 abc @ abcd '. [: 포스트] [: 사용자가이 경우에 PARAMS에서

post :create, {:post => {:user => {:email => '[email protected]'} } }

"포스트 : 생성, {: 이메일 => 'foo는 [: 전자 우편] ABC 방송 @의 ABCD'