RSpec Post带有文件,参数和标题字段

时间:2015-07-16 21:24:59

标签: ruby-on-rails ruby rspec bdd rspec-rails

我正在尝试使用RSpec测试api上传文件。 api请求是一个简单的POST请求,带有一个文件以及一些参数和一个标题字段。

我尝试使用以下代码发出POST请求:

post "media.upload", { client_id: @client.id, token: @client.token, type: @type, name: @name, format: 'json' },
{ 'HTTP_PROXY_SSL' => 'true' }, :upload => @file

但是我收到以下错误:

Failure/Error: post "cm/media.upload", { client_id: @client.id, token: @client.token, type: @type, name: @name, format: 'json' },
     ArgumentError:
       wrong number of arguments (4 for 1..3)

@file变量定义为:

@file = fixture_file_upload(Rails.root + 'spec/fixtures/images/abc.jpg', 'image/jpeg')

所以我的问题是如何在RSpec中使用文件,参数和一些标题执行POST请求?

1 个答案:

答案 0 :(得分:1)

upload param移入请求参数的其余部分:

params = {upload: @file, client_id: @client.id, token: @client.token, type: @type, name: @name, format: 'json'}
headers = {'HTTP_PROXY_SSL' => 'true'}

post 'media.upload', params, headers