Это нормально, я получаю временный файл 0 размера в моем контроллере, если я создаю экземпляр Rack :: Test :: UploadedFile один раз и повторно использую? - PullRequest
0 голосов
/ 26 октября 2018

При обновлении моего приложения с Rails 4.2.10 до 5.2.1 я заметил, что мне кажется странным.У меня есть один fixture_file_upload вызов в моем setup do из ActionDispatch::IntegrationTest подкласса.Я пытаюсь загрузить файл до аутентификации (не пройдёт) и после (пройдёт).Видимо, с первой попытки я проигнорировал временный файл на стороне контроллера, но заметил, что со второй попытки размер временного файла равен нулю!

rails new zzz-5.2.1 --skip-yarn -G -M -C -S -J
rails generate scaffold blah file:binary --no-stylesheets --no-helper --no-jbuilder --no-javascript
bundle exec rails db:migrate RAILS_ENV=test

Теперь код контроллера для создания

...
  # POST /blahs
  # POST /blahs.json
  def create
    f = blah_params[:file]
    puts "*** #{f.size} ***\n" # <-- to peek on size
    @blah = Blah.new(blah_params)
...

и проверить

  setup do
    @blah = blahs(:one)
    @file = fixture_file_upload('test/fixtures/blahs.yml')
  end
...
  test "should create blah" do
    assert_difference('Blah.count', 2) do
      post blahs_url, params: { blah: { file: @file } }
      post blahs_url, params: { blah: { file: @file } } # <- reuse @file
    end

    assert_redirected_to blah_url(Blah.last)
  end

И это то, что я получаю после bundle exec rake test

C:\dev\ruby\zzz-5.2.1>bundle exec rake test
Run options: --seed 11056

# Running:

....*** 128 ***
*** 0 ***
...

Finished in 1.576030s, 4.4415 runs/s, 5.7106 assertions/s.
7 runs, 9 assertions, 0 failures, 0 errors, 0 skips

Обратите внимание, что для второго вызова размер равен 0.Я что-то упустил или я должен сообщить о регрессе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...