При обновлении моего приложения с 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.Я что-то упустил или я должен сообщить о регрессе?