0

以下测试总是失败,但不清楚原因。

# entry_spec.rb
require 'spec_helper'

describe Entry do
  before { @entry = build_stubbed :entry }
  subject { @entry }

  it { should respond_to :published }

  describe 'validation' do
    it { should ensure_inclusion_of(:published).in_array([true, false]) }
  end
end

# entry.rb
class Entry < ActiveRecord::Base
  validates :published, inclusion: { in: [true, false] }
end

失败:

1) Entry validation should ensure inclusion of published in [true, false]
     Failure/Error: it { should ensure_inclusion_of(:published).in_array([true, false]) }
       [true, false] doesn't match array in validation
     # ./spec/models/entry_spec.rb:18:in `block (3 levels) in <top (required)>'

工厂:

FactoryGirl.define do
  factory :entry do
    published true
  end
end

我省略了其他几个属性,但没有什么特别之处,它们不应该影响代码。

4

2 回答 2

2

这似乎是shoulda-matchers 的错误。建议的解决方法是改用allow_valuematcher。

于 2013-12-06T03:06:12.727 回答
1

我想您的:published属性被nil视为false但它不是false您在数组中拥有的显式值。

于 2013-11-05T17:23:36.997 回答