Nasıl Raylar fonksiyonel test ham post veri göndermek için?
Test için yazılan veri (örneğin unparamaterized json) benim denetleyicileri birinde ham göndermek için arıyorum:
class LegacyOrderUpdateControllerTest < ActionController::TestCase
test "sending json" do
post :index, '{"foo":"bar", "bool":true}'
end
end
ama bu beni NoMethodError: undefined method `symbolize_keys' for #<String:0x00000102cb6080> verir
ActionController ham post veri göndermek için doğru yolu nedir::deneme durumu?
Burada bazı kumanda kodu
def index
post_data = request.body.read
req = JSON.parse(post_data)
CEVAP
Aynı sorunu karşısında bugün araştırdım ve bir çözüm buldum.
Senin test_helper.rb aşağıdaki yöntem içinde ActiveSupport tanımlayın::deneme durumu:
def raw_post(action, params, body)
@request.env['RAW_POST_DATA'] = body
response = post(action, params)
@request.env.delete('RAW_POST_DATA')
response
end
Fonksiyonel testi, post yöntemi gibi kullanın ama üçüncü değişken olarak ham post vücut geçirir.
class LegacyOrderUpdateControllerTest < ActionController::TestCase
test "sending json" do
raw_post :index, {}, {:foo => "bar", :bool => true}.to_json
end
end
Ham post vücut kullanarak okurken Raylar 2.3.4 bu test
request.raw_post
yerine
request.body.read
Eğer source code bakarsanız raw_post sadece istek sarar göreceksiniz.vücut.istek RAW_POST_DATA bu env karma Çek olarak okuyun.

Nasıl terminalden Curl ile JSON veri g...
Nasıl CURL ile veri belirtilen POST is...
Belirli bir URL C Professional (Servic...
Nasıl PHP file_get_contents kullanarak...
Nasıl test veritabanına db:seed veri o...