让我们考虑一个定义如下的类:
# type :string
class Foo < ActiveRecord::Base
enum type: { first: 'first', second: 'second' }
validates :type, presence: true, inclusion: { in: types.keys }
end
Rspec:
describe 'Validations' do
it { is_expected.to validate_presence_of(:type) }
it { is_expected.to validate_inclusion_of(:type).in_array(Foo.types.keys) }
end
失败/错误:它{ is_expected.to validate_inclusion_of(:type).in_array(Foo.types.keys)}
参数错误:“shoulda-matchers测试字符串”不是有效的类型
这是预期的行为吗?请帮帮忙
我尝试从shoulda-matcher repo探索ValidateInclusionOfMatcher,但找不到任何具体的东西。
目前还不清楚为什么验证包含会失败,以及它是如何首先根据主题进行检查,然后应用ARBITRARY_OUTSIDE_STRING导致上述错误的。
我的理解是,它应该检查上述行为,一个是使用factorybot在subject中传递值,另一个是通过将type替换为一些随机值。
1条答案
按热度按时间cnwbcb6i1#
你能试着把列名改成别的吗?名称
type
是为STI保留的,或者如果您想保留它,请尝试覆盖继承列:也就是说,
shoulda-matchers
错误消息确实令人困惑。