2012-01-24 19 views
7

Trong ứng dụng Rails của tôi, tôi truy cập vào băm env trong một trong các hành động điều khiển của tôi.Tại sao giá trị băm của env trống trong môi trường kiểm tra Rails?

cái gì đó dọc theo dòng:

def my_before_filter 
    env['some.key'] = "Something or other" 
end 

này hoạt động tuyệt vời cho các yêu cầu của tôi.

Nếu tôi bắt đầu ứng dụng Rails của tôi trong môi trường thử nghiệm, và ghé thăm một hành động như:

# /users in UsersController#index 
def index 
    puts env.inspect 
end 

Sau đó, nội dung của các hash env là đầu ra cho giao diện điều khiển như mong đợi.

Khi tôi nhận được hành động này từ bên trong một ví dụ RSPec, đầu ra là một băm rỗng?

it 'should get the index action' do 
    get :index 
end 

.....{}.... # rspec output 

Tại sao hàm băm env trống?

tôi đã xây dựng một ứng dụng dummy rails để hiển thị này

+0

Tôi nghĩ bạn phải chạy nó trong môi trường 'phát triển'. – Reactormonk

+0

Tôi thường chạy nó trong môi trường phát triển. Các băm env đã có mặt trong quá trình phát triển. Tôi muốn đề cập đến hành vi mà tôi thấy khi tôi khởi động máy chủ theo cách thủ công trong chế độ "kiểm tra" không phải là hành vi tương tự mà tôi thấy khi tạo yêu cầu thông qua bộ thử nghiệm. – bodacious

Trả lời

10

sử dụng

request.env 

thay vì chỉ ENV trong mã điều khiển.

ví dụ/

def index 
    puts request.env.inspect 
end 

Hy vọng rằng sẽ giúp?

BTW trên ghi chú khác: khi làm việc với repo github của bạn, bạn cần xóa public/index.html để tuyến đường gốc của bạn hoạt động, khi chạy máy chủ.

+0

Hi - cảm ơn cho các thông tin phản hồi ... điều này vẫn không trả lời tại sao băm env không có sẵn trong bộ điều khiển trực tiếp mặc dù? PS - đã cập nhật bản tóm tắt – bodacious

+3

Đó là vì rspec-rails bỏ qua ActionController :: Phương thức công văn kim loại – gef

+0

Ah - cảm ơn gef – bodacious

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