グレープを使用して Rails アプリケーションで API を作成します。
ここで、すべての API をテストしたいと思います。私のAPIでは、サウンドをアップロードし、sound/:idを取得し、sound/:idを削除できます。
ポストサウンドのテストを書き始めましたが、私のテストでは常に「nil:NilClass の未定義のメソッド []」が返されます。
アップロード用の私のcurlコマンド(それは仕事です):
curl -X POST -i -F data=@SOUND/test.mp3 "http://localhost:3000/api/sounds/new?access_token=1234567"
"-F data=" を使用する場合、問題は curl にあると思います。@ を削除する場合は、"=" の後に @ を追加する必要があります。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
このテストは次のエラーを返します: undefined method [] for nil:NilClass error . どうすれば修正できるか知っている人はいますか?
ご協力いただきありがとうございます。