SORU
20 Ocak 2010, ÇARŞAMBA


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
21 Ocak 2010, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EvilControllers

    EvilControll

    20 Ocak 2008
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013