1

RSpec (Rails 3.2) を使用してコントローラーをテストしています。ファイルのアップロード (CarrierWave を使用) も含むコントローラーがありますが、エラーが発生し続けます。

失敗/エラー: "image" => Fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'image.png'), 'image/png') RuntimeError: .../spec/ Fixtures/files/image.png ファイルが存在しません

私のコントローラーでは、画像のアップロードを次のように定義しました。

  def valid_attributes
{ "title" => "My own title",
  "description" => "Something cool",
  "image" => fixture_file_upload(Rails.root.join('spec', 'fixtures', 'files', 'image.png'), 'image/png')
}

終わり

もちろんファイルの存在は確認しましたが、他に見落としがあるのではないでしょうか?

4

1 に答える 1

4

Rails3.2Rack::Test::UploadedFile.newではなく使用する必要があるようですfixture_file_upload

def valid_attributes
  { "title" => "My own title",
    "description" => "Something cool",
    "image" => Rack::Test::UploadedFile.new(Rails.root.join('spec', 'fixtures', 'files', 'image.png'), 'image/png')
  }
end

このSOの質問/回答を参照してください:fixture_file_upload has {file} doesnotexistエラー

于 2012-12-09T12:56:57.327 に答える