我正在开始一个新项目,这是我第一次使用Rails 5.1.0。我在我的第一个请求规范中遇到了问题。
describe 'Users', type: :request do
it 'are created from external data' do
json_string = File.read('path/to/test_data/user_data.json')
params = { user: JSON.parse(json_string) }
headers = { "CONTENT_TYPE" => "application/json" }
expect do
post '/api/v1/users', params.to_s, headers
end.to change {
User.count
}.by(1)
expect(response.status).to eq 200
end
end
这个规范返回错误ArgumentError: wrong number of arguments (given 3, expected 1)
。官方文档没有提供太多信息,详见官方文档。
如果我去掉.to_s并发送一个哈希值,就像这样:
post '/api/v1/users', params, headers
我又遇到了一个错误:
ArgumentError: unknown keyword: user
有什么想法吗?
150个由于此问题而失败,另外150个由于其他原因而失败,并且我想尽可能少地更改它们,以便首先发现和修复“真正”的问题。 - wizpost
方法追踪到了ActionDispatch::Integration::Session#process
,我猜这就是Rails 4和5之间的变化。我不能说我熟悉Rails内部,但也许这个变化在某个时候被记录在那里了? - wiz