以下轨道,通过设备,注册控制器成功运行
before_action :clean_params, only: [:create, :update]
定义为:
def clean_params
if !params[:user][:mobile].nil?
params[:user][:mobile] = params[:user][:mobile].gsub(/s+/, "")
end
end
但是,如果我运行测试
mobile = ' 3331 11 220 0 '
user = User.new(first_name: 'MeMeMeMeMe', last_name: 'mYSELF', mobile: mobile, password: '11111111', password_confirmation: '11111111' )
assert user.valid?
user.save!
puts user.mobile
assert user.mobile == '3331112200'
它失败了,导致3331 11 220 0
,因此明显没有运行before_action。
如何确保before_actions
在测试套件中运行?
您的测试仅针对User类,但为控制器定义了before_action。如果你想测试"clean_params"的结果,你必须为控制器创建一个测试