我正在使用 Rails 5.2 并进行一些测试。我正在尝试我的单元测试,ActionController::TestCase
发现@controller.class.skip_before_action :verify_user
在进入下一个测试单元方法之前不会自动重置控制器。
现在因为 Rails 测试在每次运行时都是随机的,某些单元有时会失败,有时不会失败。我认为它期待 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
...