Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何测试RESTAPI请求(rails)_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何测试RESTAPI请求(rails)

Ruby on rails 如何测试RESTAPI请求(rails),ruby-on-rails,Ruby On Rails,我有restapi,例如:我已经创建了REST用户,创建用户的终点是转到“localhost:3000/users”POST方法 所以param的模式应该是这样的: :user => {:name => "apple", :address => "heaven"} 我的问题是: 如何创建上面的模式,然后我用端点POST方法测试它 我已经使用postman客户端进行了测试,但由于模式不正确而失败(错过root:user) 感谢控制器测试将捕获您描述的错误类型,并且比端到端测试更

我有
restapi
,例如:我已经创建了REST用户,创建用户的终点是转到“localhost:3000/users”POST方法

所以param的模式应该是这样的:

:user => {:name => "apple", :address => "heaven"}
我的问题是:

如何创建上面的模式,然后我用端点POST方法测试它

我已经使用
postman
客户端进行了测试,但由于模式不正确而失败(错过
root:user


感谢

控制器测试将捕获您描述的错误类型,并且比端到端测试更有效。RSpec中的示例:

it 'creates a new user' do
  post :create, user: {name: 'apple', address: 'heaven'}, format: 'json'

  assert_response :success
  expect(response).to render_template(:create)
  expect(assigns(:user).name).to eq('apple')
  expect(assigns(:user).address).to eq('heaven')
end
我使用了
curl
(在代码中)端到端测试API。这个方法可能也会起作用

对于
curl
请求,您需要为数据传递
-X POST
参数和
-d
参数<代码>-d可以有以下格式:

-d "user[name]=apple" -d "user[address]=heaven"
-d {"user": {"name": "apple", "address": "heaven"}}
您还可以使用
-H
传递标题

总共:


curlhttp://your_url -X POST-H“内容类型:应用程序/json”-d{“用户”:{“名称”:“苹果”,“地址”:“天堂”}

感谢Jay的帮助!