Ami*_*ani 5 rspec ruby-on-rails capybara
我需要在功能测试中发布 JSON,就像在我的控制器测试中一样:
post '/orders.json', params.to_json, format: :json
Run Code Online (Sandbox Code Playgroud)
但我需要在功能测试中做到这一点,并且page.driver.post只发布表单数据。如何在水豚中发布 JSON?
我有一个(非 Rails)应用程序(我们称之为行星),它将 JSON 发布到我的 Rails 应用程序(称之为星星)以创建记录,然后将用户转发到显示操作的 url。
我正在创建一个功能规范,但由于第一次交互不是 Rails 应用程序的一部分,我需要使用 JSON 来模拟它。
我一直在用这个:
page.driver.post '/orders.json', params.to_json
Run Code Online (Sandbox Code Playgroud)
但这似乎以表单形式发布,而我的星球应用程序发布 JSON。这会导致一些非常奇怪的参数问题,其中解析 JSON 为我提供了与表单数据不同的参数。
如何在水豚中发布 JSON?
Ami*_*ani -1
所以,事实证明这对水豚来说是不可能的。有关更多详细信息,请参阅Thomas Walpole的回答。
作为解决方法,我使用了httparty:
require 'httparty'
RSpec.feature 'Checkouts', type: :feature do
include HTTParty
base_uri 'http://localhost:3000'
private
def checkout_with(cart)
post orders_path(format: :json).to_s,
body: cart.to_json,
headers: { 'Content-Type' => 'application/json' }
end
end
Run Code Online (Sandbox Code Playgroud)