Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何创建ActiveRecord :: RecordInvalid进行测试?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这段代码,我试图测试:
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 @R_944_10793@er 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.@R_616_8313@,则此可能在将来成为问题.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何创建ActiveRecord :: RecordInvalid进行测试?全部内容,希望文章能够帮你解决ruby-on-rails – 如何创建ActiveRecord :: RecordInvalid进行测试?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。