2014-09-12 182 views
1

我用葡萄在我的rails應用程序中創建api。葡萄rspec上傳

現在我想測試我所有的API。在我的api中,我可以上傳聲音,獲取聲音/:id並刪除聲音/:id。

我開始寫帖子的聲音,但我的測試所有的時間回測試「未定義的方法[]爲無:NilClass」。

我上傳curl命令(這工作):

curl -X POST -i -F [email protected]/test.mp3 "http://localhost:3000/api/sounds/new?access_token=1234567" 

我認爲這個問題是在捲曲,當你使用「-F數據=」,你需要「=」如果後添加@我刪除@,我有未定義的方法[]爲nil:NilClass錯誤。

現在我的問題是我怎麼能在我的測試中添加測試上傳文件的@?

我的測試:

it "uploads a file" do 
    sound_filename = "spec/fixtures/test.mp3" 
    post "/api/sounds/new", data= Rack::Test::UploadedFile.new(sound_filename, 'audio/mp3', true) 
    expect(response.status).to eq(201) 
    expect(response.headers['Content-Type']).to eq("audio/mp3") 
    expect(response.headers['Content-Disposition']).to eq("attachment; filename*=UTF-8''test.mp3") 
    end 

此測試這個錯誤:未定義的方法[]爲無:NilClass錯誤。任何人都知道我可以修復它嗎?

感謝您的幫助。

回答

1

如何替換此行

post "/api/sounds/new", data= Rack::Test::UploadedFile.new(sound_filename, 'audio/mp3', true) 

post "/api/sounds/new", {data: Rack::Test::UploadedFile.new(sound_filename, 'audio/mp3', true)}