ruby-on-rails - Rspec:在模型无效时显示模型的错误

标签 ruby-on-rails ruby rspec

我通常在我的 Rspec 测试中写这样的东西:

user.new(...)
user.should be_valid

问题是,当该测试失败时,我看不到用户对象上的错误。有什么好的方法可以重写此测试,以便在 Rspec 输出中看到类似 user.errors.inspect 的内容?我试过 user.errors.should be_empty,但仍然只是说“预期为真,结果为假。”

最佳答案

您可以通过定义自定义匹配器来做到这一点。像这样的东西应该可以解决问题。

RSpec::Matchers.define :be_valid do
  match do |actual|
    actual.valid?
  end

  failure_message_for_should do |actual|
    "expected that #{actual} would be valid (errors: #{actual.errors.full_messages.inspect})"
  end

  failure_message_for_should_not do |actual|
    "expected that #{actual} would not be valid"
  end

  description do
    "be valid"
  end
end

关于ruby-on-rails - Rspec:在模型无效时显示模型的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6864350/

相关文章:

ruby - 动态交换 Rails3 布局

MySQL - 为 Rails 应用程序设置默认时区

ruby-on-rails - 具有属性的 rspec stub any_instance

ruby-on-rails - 如何使用 rspec 测试 Cloudinary rails 和 Attachinary?

javascript - 在rails中渲染js.erb

ruby-on-rails - 对符号数组执行计算

ruby-on-rails - 如何使用 Paperclip 在 Rails 4 中上传多个图像

ruby - 数据/文件更改时重新加载中间人

未在集成测试中加载的 Javascript 库

ruby-on-rails - rails : Why do I get "warning: already initialized constant JSON::VERSION" when running rake cucumber?