Я использую Rails 5.2 и провожу некоторое тестирование.Я пытаюсь выполнить свое модульное тестирование с помощью ActionController::TestCase
и обнаружил, что @controller.class.skip_before_action :verify_user
не перезагружает контроллер автоматически перед переходом к следующему методу тестового модуля.
Теперь, когда тесты рельсов рандомизируются при каждом запуске, определенный модуль дает сбойиногда, а не в другие времена.Я подумал, что ожидал HTTP 401, но получил 200. Потому что контроллер проигнорировал before_action :verify_user
.
Я мог бы установить @controller.class.before_action :verify_user
в конце каждой единицы (и это работает!), Но это не должно бытьпредставитель тестирования sys для сброса контекста перед каждым запуском?
Дайте отрывок моего кода:
class ApiSiteMetricsTest < ActionController::TestCase
tests Api::SiteMetricsController
def test_1_index
@controller.class.skip_before_action :verify_user,raise: false
get "index", params:{
"format"=>"json",
"site_metric_value"=>{
"site_metric_id"=>2403,
"date_acquired"=>"2018-03-14T01:44:00+05:30",
"site_id"=>3840,
"lab_device_details"=>"",
"comment"=>"",
"sender_affiliation"=>"",
"float_value"=>""
}
}
assert_response :success
File.open("#{Rails.root}/del.html", "wb") { |f| f.write(@response.body) }
#Do I have to do this o every test?
#@controller.class.before_action :verify_user
end
...