2013-03-10 57 views
0

对soundcloud宝石的测试还没有看到太多。大多数情况都很出色 - 但是我发现通过我的规格将文件上传到SoundCloud有点棘手。Ruby Soundcloud宝石:无法测试上传的文件

这里的问题:

规格:

file = "#{Rails.root}/spec/factories/files/sample.mp3" 
title = "From the test suite" 
track = @client.post('/tracks', track: {title: title, asset_data: File.new(file)}) 

不管是不是我用

File.new 

File.expand_path 

的错误是一样的:无MethodError: 未定义的方法`地图”的#String:0x007fa1ce8425c0

控制器中的成功代码是:

file = params["soundcloud_file"] 
title = params["title"] 
track = client.post('/tracks', track: { 
    title: title 
    asset_data: File.new(file.tempfile, 'rb') 
    }) 

现在我明白PARAMS [ “soundcloud_file”]是一种ActionDispatch :: HTTP: :UploadedFile,所以这就是我一直试图在过去一小时左右的工作与没有运气。

我愿意以任何方式成功测试上传。

+0

更新。在发现测试无法通过之后,即使仅仅触发控制器操作后,控制器发出了一条被抓取的轨迹,我知道一些可疑的事情发生了。 因此,我卸载了一堆测试宝石,我尝试了但不是完整的:VCR,WebMock,Caller和Capybara-Mechanize的绑定。如果我特意找出交易的具体内容,我会倾向于来电者的绑定作为罪魁祸首......会让你知道。 – phillyslick 2013-03-12 00:27:11

回答

-1

问题出在'webmock'宝石上。即使使用了VCR所需版本(1.10.0 <)它抛出:

NoMethodError: undefined method `map' for <#String: ... > 

与“fakeweb”宝石更换纠正错误。