2014-05-09 14 views
5

Tôi đã thử làm theo hướng dẫn về cách chuyển tiêu đề tùy chỉnh nhưng không hoạt động đối với tôi. Dưới đây là những gì tôi đang kêu gọi trong thử nghiệm respec tôitiêu đề yêu cầu tùy chỉnh trong kiểm tra bộ điều khiển rspec đang được truyền dưới dạng rack.session

post :create, {name:profile.name}, {'X-API-KEY' => 'somekey'} 

Từ bộ điều khiển của tôi, tôi không nhìn thấy nó trong tiêu đề như X-API-KEY nhưng thay vào đó có vẻ là trong request.headers [ "rack.session" ] [ "X-API-KEY"]

làm thế nào để làm cho nó không vượt qua nó như là "rack.session"

Trả lời

6

tôi đã đào bới trong vấn đề này sáng nay là tốt. Vấn đề xuất phát từ đây http://apidock.com/rails/ActionController/TestProcess/process làm chữ ký phương thức trông giống như thế này (action, parameters = nil, session = nil, flash = nil, http_method = 'GET'). Điều này là khá bất ngờ với tôi và tôi sẽ tiếp tục tìm kiếm mặc dù tôi không hoàn toàn chắc chắn lý do tại sao nó xảy ra như thế này.

Để có được nó làm việc bạn có thể làm

before do request.headers['X-API-KEY'] = 'somekey' end

này hoạt động, mặc dù không chính xác những gì tôi muốn/mong đợi từ các phương pháp get.

+1

Bạn đã bao giờ tìm hiểu lý do tại sao cách được làm tài liệu dường như không hoạt động? (Giải pháp của bạn làm việc cho tôi) – joelparkerhenderson

+0

hoạt động này nhưng sẽ tốt hơn khi gửi tiêu đề x-api-key với yêu cầu riêng lẻ vì vậy tôi không phải tạo hai khối 'mô tả' hoàn toàn khác với' trước của chúng các khối để kiểm tra các khóa api khác nhau ... – sixty4bit

+1

@joelparkerhenderson Theo https://github.com/rspec/rspec-rails/issues/65 đây là cách để thực hiện. @ sixty4bit bạn chỉ có thể đặt điều này bên trong khối 'it' của bạn ngay trước khi bạn thực hiện yêu cầu, hoặc viết một phương thức thực hiện hai điều đó cho bạn, thay vì trong một khối trước. –

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