【问题标题】:RSpec Boolean ValidationRSpec 布尔验证
【发布时间】:2013-08-14 20:02:45
【问题描述】:

测试:

it { should ensure_inclusion_of(:on_ride_photo).in_array([true, false]) }

验证:

  validates :on_ride_photo,
    presence: true,
    inclusion: { in: [true, false] }

错误:

1) 过山车验证应确保将 on_ride_photo 包含在 [真假] 失败/错误:它{应该确保_inclusion_of(:on_ride_photo).in_array([true, false])} [true, false] 与验证中的数组不匹配 # ./spec/models/coaster_spec.rb:96:in `block (3 levels) in '

这是在 Postgres 数据库中,该字段在迁移中定义如下:

  def change
    add_column :coasters, :on_ride_photo, :boolean
  end

并且在数据库模式中显示如下:

t.boolean  "on_ride_photo"

有什么想法吗?

【问题讨论】:

  • 啊,对了,我想我得写一个标准测试来检查这个?
  • 如果它是你认为值得测试的东西,它看起来就是这样,除非有补丁。不过,我质疑这些类型的测试。

标签: ruby-on-rails validation rspec rails-postgresql


【解决方案1】:

我将satisfy RSpec 匹配器用于布尔值。

it { expect(:on_ride_photo).to satisfy {|v| v == true or v == false} }

【讨论】:

    【解决方案2】:

    6ft Dan 说的有效,但更简洁的方法是将 rspec_boolean 添加到组中的 Gemfile :development, :test:

    gem 'rspec_boolean'
    

    而不是像这样使用它:

    expect(val.is_done?).to be_boolean
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2014-06-05
      • 1970-01-01
      相关资源
      最近更新 更多