ruby-on-rails – 如何创建ActiveRecord :: RecordInvalid进行测
发布时间:2020-12-16 21:03:52 所属栏目:百科 来源:网络整理
导读:我有这段代码,我试图测试: def error_from_exception(ex) if ex.is_a?(ActiveRecord::RecordInvalid)... 要进入if块,我需要传入正确的ex参数. 如何创建ActiveRecord :: RecordInvalid? 使用rspec,我试图做这样的事情: context 'exception is ActiveRecord
我有这段代码,我试图测试:
def error_from_exception(ex) if ex.is_a?(ActiveRecord::RecordInvalid) ... 要进入if块,我需要传入正确的ex参数. 如何创建ActiveRecord :: RecordInvalid? 使用rspec,我试图做这样的事情: context 'exception is ActiveRecord::RecordInvalid' do it 'returns the validation error' do begin raise ActiveRecord::RecordInvalid rescue Exception => ex binding.pry ### # From my pry session: # $ex # $<ArgumentError: wrong number of arguments (0 for 1)> # $ex.class # $ArgumentError < StandardError ### end end end 如何找出库正在寻找的参数类型? RecordInvalid link 解决方法
编辑:现在可以在Rails 5.1.1中使用.此提交后不再需要record参数:
https://github.com/rails/rails/commit/4ff626cac901b41f86646dab1939d2a95b2d26bd
如果您使用的是5.1.1下的Rails版本,请参阅下面的原始答案: 似乎不可能自己引发ActiveRecord :: RecordInvalid.如果查看ActiveRecord :: RecordInvalid的源代码,初始化时需要记录: class RecordInvalid < ActiveRecordError attr_reader :record # :nodoc: def initialize(record) # :nodoc: @record = record ... end end (来源:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/validations.rb) 你可以做的事情就是简单地创建一个无效的实际记录并尝试使用save保存它! (例如在需要User.name时调用User.new.save!).但是,请记住,如果您使用的模型已更改且在测试中变为有效(不再需要User.name),则此可能在将来成为问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |