2009-02-09 35 views
20

Làm việc với Test :: Unit và Shoulda. Đang cố gắng kiểm tra Users.create. Sự hiểu biết của tôi là các biểu mẫu Rails gửi thông số cho một đối tượng như sau:Làm cách nào để bạn chỉ định tham số POST trong kiểm tra Rails?

user[email] 

Biến thành băm trong hành động của bạn, phải không?

params[:user][:email] 

OK, vì vậy trong bài kiểm tra của tôi, tôi đã cố gắng ...

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

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

Trong cả hai trường hợp, hơn trong hành động của tôi, params[:user] là con số không.

Trả lời

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

Hình thức chung của tất cả các phương pháp thử nghiệm của nhận được, bưu điện, đặt, xóa như sau:

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

Và trong bài kiểm tra, băm params được trực tiếp gửi vào params hành động điều khiển của bạn không có bản dịch của bất kỳ loại nào. Thậm chí làm thử nghiệm tích hợp bạn thực sự không cần phải kiểm tra chuỗi này để dịch thông số như nó được bảo vệ rất tốt bằng các kiểm tra khung đường ray. Cộng với tất cả các phương pháp thử nghiệm cần tham số chấp nhận một băm theo cách này mà không có khiếu nại làm cho mọi thứ dễ dàng cho bạn.

+0

cũng là gonna làm việc này: "bài: tạo, {: email => 'foo @ bar.com '} "và từ phía bên điều khiển, bạn sẽ có: params [: email] cung cấp cho bạn' [email protected] ' – nisevi

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

Trong trường hợp này params [: bài] là {}, params [: hướng dẫn] là {: email => 'abc @ abcd'}, params [: hướng dẫn] [: email] được ' abc @ abcd '.

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

Trong trường hợp này params [: bài] [: hướng dẫn] [: Email] là 'abc @ abcd'

Các vấn đề liên quan