1

测试:

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

验证:

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

错误:

1) 过山车验证应确保在 [true, false] 失败/错误中包含 on_ride_photo:它 { should ensure_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"

有什么想法吗?

4

2 回答 2

0

我将satisfyRSpec 匹配器用于布尔值。

it { expect(:on_ride_photo).to satisfy {|v| v == true or v == false} }
于 2014-12-24T00:21:07.930 回答
0

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

gem 'rspec_boolean'

而不是像这样使用它:

expect(val.is_done?).to be_boolean
于 2015-09-16T07:52:49.253 回答