提问人:piyush 提问时间:6/24/2023 最后编辑:piyush 更新时间:6/25/2023 访问量:105
validation_inclusion_of rspec 测试用例返回 ArgumentError
validation_inclusion_of rspec test case is returning ArgumentError
问:
让我们考虑一个具有定义如下所示的类:
# a_type :string
class Foo < ActiveRecord::Base
enum a_type: { fir: 'first', sec: 'second' }
validates :a_type, presence: true, inclusion: { in: a_types.keys }
end
Rspec:
describe 'Validations' do
it { is_expected.to validate_presence_of(:a_type) }
it { is_expected.to validate_inclusion_of(:a_type).in_array(Foo.a_types.keys) }
end
失败/错误:it { is_expected.to validate_inclusion_of(:a_type).in_array(Foo.a_types.keys) }
ArgumentError: “should've-matchers test string' 不是有效的a_type
这是预期的行为吗?请帮忙
我确实尝试从 should've-matcher 存储库中探索 ValidateInclusionOfMatcher,但找不到任何具体的东西。
目前尚不清楚为什么验证包含会失败,以及它如何首先根据主题进行检查,然后应用导致上述错误的ARBITRARY_OUTSIDE_STRING。
我的理解是,它应该检查上述行为,一个是使用 factorybot 将值传递给主题,另一个是通过将a_type替换为某个随机值来检查。
答:
1赞
tyrro
6/25/2023
#1
您可以尝试将列名称更改为其他名称吗?该名称是为 STI 保留的,或者如果要保留它,请尝试覆盖继承列:type
self.inheritance_column = nil
话虽如此,错误消息确实令人困惑。shoulda-matchers
评论
0赞
piyush
6/25/2023
Type 更像是一个示例,您可以将其假定为 type1
0赞
piyush
6/25/2023
#2
无需验证或显式检查是否包含,因为为列定义的枚举会隐式执行此操作。
感谢@Schwern指出这一点
评论