2012-01-26 34 views
7

Vì vậy, tôi có ứng dụng Sinatra nhận XML thông qua HTTP POST từ một dịch vụ khác. Tôi muốn thử nghiệm nó cục bộ. Tôi có một tệp XML thử nghiệm mà tôi gửi đến điểm cuối. Điều đó diễn ra tốt đẹp. Tôi cũng thiết lập một số tiêu đề như thế này:Cách kiểm tra tiêu đề bằng rspec và kiểm tra giá trong Sinatra

post '/', xml, 'HTTP_X_MY_AWESOME_HEADER' => "It's value" 

nơi xml là bản sao chính xác của XML bình thường đang được gửi đến thiết bị đầu cuối của tôi. Nhưng tiêu đề tôi vượt qua như một tham số không bao giờ được hiển thị trong đầu ra.

Tôi có làm gì sai ở đây không? Có rất nhiều bài đăng xung quanh ở đây về nó, nhưng tất cả đều lỗi thời.

Tôi đang sử dụng Rspec 2.8, Sinatra 1.3.2, Ruby 1.9.3-p0, Rack :: Test 0.6.1.

CẬP NHẬT 2012-01-28 11:37: Rõ ràng là tôi đã không suy nghĩ khi đang hỏi câu hỏi này. Gửi tiêu đề có yêu cầu không có nghĩa là tôi sẽ nhận lại chúng trong phản hồi.

Vì vậy, câu hỏi bây giờ là: Làm cách nào để kiểm tra các tiêu đề yêu cầu mà không gửi lại chúng với phản hồi?

Trả lời

4

Bạn sẽ có thể kiểm tra việc last_request như vậy:

last_request.env["HTTP_X_MY_AWESOME_HEADER"] 

sử dụng RSpec & ví dụ của bạn ở trên, bạn sẽ thử nghiệm với:

last_request.env["HTTP_X_MY_AWESOME_HEADER"].should == "It's value" 

Và hy vọng bạn sẽ nhận được một ánh sáng màu xanh lá cây:)

Thông tin thêm tại đây: http://www.sinatrarb.com/testing.html#asserting_expectations_about_the_response

HTH

+2

gửi tiêu đề có yêu cầu không có nghĩa là tôi nhận được các tiêu đề đó ngược lại. Vì vậy, 'last_response' không phải chứa' HTTP_X_MY_AWESOME_HEADER'-header – Ivan

+0

Tất nhiên. Đã cập nhật câu trả lời :) – gef

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