Rspec 控制器测试,传递 JSON 参数
Rspec Controller tests, passing JSON params
我正在尝试实现以下目标:在 RSpec 控制器测试中创建一个 POST json 请求,并向其传递参数。这是我的代码
it 'returns access_token' do
post :login, email: 'bla', password: 'bla1', format: :json
end
我在控制器中得到的request.body.read是一个带有参数的字符串,但是这样传递的
email=bla&password=bla1
这绝对不是JSON。但是,如果我使用 CURL
发出请求
curl -d '{"email": "bla@bla.com" }' http://127.0.0.1:3000/users/login --header "Accept: application/json" --header "Content-Type: application/json"
我的 request.body.read 是正确的 json
"{\"email\": \"bla@bla.com\", \"password\": \"bla1\" }"
那么如何从我的 rspec 中以这种方式传递它?
您可以在 RSpec 文件中传递 header。
header "Content-Type", "application/json"
post :something
你可以像这样传递参数:
post :create, :object => { :email => email,
...
}
post "/models/#{@model.id}",
params: {
some_field: "1234",
},
as: :json
我正在尝试实现以下目标:在 RSpec 控制器测试中创建一个 POST json 请求,并向其传递参数。这是我的代码
it 'returns access_token' do
post :login, email: 'bla', password: 'bla1', format: :json
end
我在控制器中得到的request.body.read是一个带有参数的字符串,但是这样传递的
email=bla&password=bla1
这绝对不是JSON。但是,如果我使用 CURL
发出请求curl -d '{"email": "bla@bla.com" }' http://127.0.0.1:3000/users/login --header "Accept: application/json" --header "Content-Type: application/json"
我的 request.body.read 是正确的 json
"{\"email\": \"bla@bla.com\", \"password\": \"bla1\" }"
那么如何从我的 rspec 中以这种方式传递它?
您可以在 RSpec 文件中传递 header。
header "Content-Type", "application/json"
post :something
你可以像这样传递参数:
post :create, :object => { :email => email,
...
}
post "/models/#{@model.id}",
params: {
some_field: "1234",
},
as: :json