rspec 2.13.0和Rails验证的奇怪错误

时间:2013-07-01 20:26:24

标签: ruby-on-rails rspec associations

我在Rails验证器中有以下代码:

if object.channel && object.channel.requires_cvv? && object.cvv.blank?
  object.errors[:cvv] << "InputDataMissingError: 'cvv' is missing"
end

验证器在模型中使用如下:

 validates_with CreditCardValidator

RSpec版本是2.13.0,规格:

{
  :card_number => { :invalid => %w(123 4200000000000001 999 JKJK dam$$%%§), :valid => %w(4200000000000000 5549112961922473 4556681898554 6011673896407010 3096807472914966 4916580675414755) },
  :cvv => { :invalid => %w(444123 1 12 lplp $$$$$$ HUHUHUHU), :valid => %w(123 444) },
  :remote_ip => { :invalid => %w(444123 1 12 lplp $$$$$$ 123.456.789.1/24), :valid => %w(0.0.0.1 127.0.0.1 123.456.789.1) }
}.each do |property, values|  
  values[:invalid].each do |invalid| 
    it{ should_not allow_value(invalid).for(property) }
  end
  values[:valid].each do |valid|  
    it { should allow_value(valid).for(property) }
  end
end

失败很奇怪:

 1) MyTransaction 
 Failure/Error: it{ should_not allow_value(invalid).for(property) }
 NoMethodError:
   undefined method `config' for #<MyTransaction:0x1102715a8>
 # ./spec/models/transactions/my_transaction_spec.rb:20

这似乎是一个奇怪的RSpec加载问题错误,在开发/生产模式中看不到,仅在测试中。我没有这样的'config'方法。该错误是由简单的object.channel调用引起的,该调用只是尝试加载通道关联。请注意,在这种情况下,object.channel为nil。

有什么想法吗?我正在调试一些RSpec / Rails内部,但是我希望能节省几个小时,以及关于RSpec如何加载gems和其他Rails组件的良好链接/信息。

由于

0 个答案:

没有答案