ajax - 使用 Rack::Test 测试 AJAX POST - 如何传递数据?

标签 ajax rest sinatra rack-test

我正在使用 Rack::Test测试我的应用程序并需要测试通过 AJAX 发布的数据。

我的测试看起来像:

describe 'POST /user/' do
  include Rack::Test::Methods
  it 'must allow user registration with valid information' do
    post '/user', {
      username: 'test_reg',
      password: 'test_pass',
      email: 'test@testreg.co'
    }.to_json, {"CONTENT_TYPE" => 'application/json', "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest"}
    last_response.must_be :ok?
    last_response.body.must_match 'test_reg has been saved'
  end
end

但是在服务器端它没有接收到 POSTed 数据。

我也试过在没有 to_json 的情况下只传递参数哈希,但这没有任何区别。

知道怎么做吗?

最佳答案

您的发布端点必须解析发布的 JSON 正文本身,我假设您已经这样做了。你能发布你的端点是如何工作的,还有机架测试、机架、ruby 和 sinatra 版本号吗?另请提及您如何测试服务器是否收到任何东西——即测试模型可能会混淆您的检测。

    post '/user' do
       json_data = JSON.parse(request.body.read.to_s)
       # or # json_data = JSON.parse(request.env["rack.input"].read)
       ...
    end

关于ajax - 使用 Rack::Test 测试 AJAX POST - 如何传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18713714/

相关文章:

php - 当用户中止连接时回滚事务

javascript - “预检响应无效(重定向)”错误

WCF 服务方法返回 json 或 soap

ruby - Sinatra cookie 未按预期运行

ruby - headless (headless)操作在 Sinatra 路由中不起作用

javascript - Rails ajax 渲染部分

javascript - 最好使用 Angular 将非 JSON 文件更改为真正的 JSON 文件

javascript - 如何发送 REST 调用并返回 json 和结果?

ruby-on-rails - Sinatra 应用程序作为 Rails 3 子路径

javascript - 成功回调没有执行?