Rails在操作之前进行了合并控制器的测试



以下轨道,通过设备,注册控制器成功运行

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"的结果,你必须为控制器创建一个测试

最新更新