为什么RSpec对我的活动模型对象的错误撒谎? 密码 规格 输出 胡说八道的真正证据: 天哪…

为什么RSpec对我的活动模型对象的错误撒谎? 密码 规格 输出 胡说八道的真正证据: 天哪…,rspec,rspec-rails,Rspec,Rspec Rails,如果你不调用有效的?方法在规范中使用matcher上的haven.errors\u之前,它将始终返回false,即使您的errors对象中包含内容 可能重复的 class Foo include ActiveModel::Validations def bar errors.add(:base, 'WHAT THE HELL!?') end end describe 'nonsense' do specify do foo = Foo.new foo.

如果你不调用有效的?方法在规范中使用matcher上的haven.errors\u之前,它将始终返回false,即使您的errors对象中包含内容

可能重复的
class Foo
  include ActiveModel::Validations

  def bar
    errors.add(:base, 'WHAT THE HELL!?')
  end
end
describe 'nonsense' do
  specify do
    foo = Foo.new
    foo.bar
    expect(foo).to have(1).error_on(:base)
  end
end
 Failure/Error: specify { expect(foo).to have(1).error_on(:base) }
   expected 1 error on :base, got 0
describe 'nonsense' do
  specify do
    foo = Foo.new
    foo.bar
    pus foo.errors.inspect
    expect(foo).to have(1).error_on(:base)
  end
end

===>
#<ActiveModel::Errors:0x00000109ba51a8 @base=#<Foo:0x00000109ba51f8 @errors=#<ActiveModel::Errors:0x00000109ba51a8 ...>>, @messages={:base=>["WHAT THE HELL!?"]}>