[英]How can I send a POST mock request with Rack on a ruby-on-rails application?
我正在测量在rails new myblog --database=sqlite3
生成的 Rails 博客应用程序的各个方面所花费的时间。 我在没有修改的情况下使用它,并且数据库包含博客文章。 到现在为止,我只是在测试特定文章的 GET 请求所花费的时间。 我为此使用 Rack 及其 MockRequest,这是我的测试文件的摘录:
app = Rails.application
env = Rack::MockRequest::env_for("http://localhost/blog_posts/25")
resp = app.call(env)
unless resp.first == 200
raise "error with response #{resp.first}"
end
我意识到像这样使用,我的env_for
调用只执行 GET 请求,我想使用 POST 请求将新的博客文章添加到我的数据库中,但我不知道该怎么做。 我得到的最接近的方法是按如下方式修改我的测试脚本,但我总是收到 422 响应(“您想要的更改被拒绝,也许您试图更改您无权访问的内容。”)。
app = Rails.application
env = Rack::MockRequest::env_for("http://localhost/blog_posts", :method => "POST", :params => {content: "lorem ipsum body", title: "lorem ipsum title", created_at: DateTime.now(), updated_at: DateTime.now()})
resp = app.call(env)
unless resp.first == 200
raise "error with response #{resp.first}"
end
所以我的问题是:
作为附加信息,这是数据库的架构:
create_table "blog_posts", force: :cascade do |t|
t.string "title"
t.text "content"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
我的测试脚本中有两个错误:
env = Rack::MockRequest::env_for("http://localhost/blog_posts", :method => "POST", :params => {post:{content: "lorem ipsum body", title: "lorem ipsum title"}})
现在工作正常!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.