Rspec Controller测试,传递JSON参数

Dmi*_*nko 6 testing json controller rspec ruby-on-rails

我正在尝试实现以下目的:在RSpec Controller测试中创建一个POST json请求,并将其传递给params.这是我的代码

it 'returns access_token' do
    post :login, email: 'bla', password: 'bla1', format: :json
end
Run Code Online (Sandbox Code Playgroud)

我在控制器中获得的请求.body.read是一个带有params的字符串,但是像这样传递 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传递这种方式呢?

the*_*uit 6

post "/models/#{@model.id}",
        params: {
            some_field: "1234",
        },
        as: :json
Run Code Online (Sandbox Code Playgroud)