我用葡萄在我的rails应用程序中创建了一个api。
现在我想测试我所有的 api。在我的 api 中,我可以上传声音、获取声音/:id 和删除声音/:id。
我开始为后期声音编写测试,但我的测试一直返回“nil:NilClass 的未定义方法 []”。
我用于上传的 curl 命令(有效):
curl -X POST -i -F data=@SOUND/test.mp3 "http://localhost:3000/api/sounds/new?access_token=1234567"
我认为问题出在 curl 中,当您使用“-F data=”时,您需要在“=”之后添加 @ 如果我删除 @ ,我有未定义的方法 [] 用于 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
此测试返回此错误:未定义方法 [] for nil:NilClass 错误。有谁知道我该如何解决?
谢谢你的帮助。