1

グレープを使用して 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 . どうすれば修正できるか知っている人はいますか?

ご協力いただきありがとうございます。

4

1 に答える 1

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)}
于 2015-09-30T08:10:48.527 に答える