作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 device
模型中,我有
enum device_type: { ios: 1 , android: 2 }
validates :device_type, presence: true, inclusion: { in: device_types.keys }
device_spec.rb
中,我为此编写了一些测试,例如
describe 'validations' do
subject { FactoryGirl.build(:device) }
it { is_expected.to allow_values('ios', 'android').for(:device_type) }
it { is_expected.to validate_inclusion_of(:device_type).in_array(%w(ios android)) }
it { is_expected.not_to allow_value('windows').for(:device_type) }
end
allow_values('ios', 'android')
通过了,但是剩下的两个都失败了。
1) Device should ensure inclusion of device_type in ["ios", "android"]
Failure/Error: it { is_expected.to validate_inclusion_of(:device_type).in_array(%w(ios android)) }
ArgumentError:
'123456789' is not a valid device_type2) Device should not allow device_type to be set to "windows"
Failure/Error: it { is_expected.not_to allow_value('windows').for(:device_type) }
ArgumentError:
'windows' is not a valid device_type
最佳答案
当您将属性定义为 enum 时,您可以使用 Shoulda 匹配器进行测试
it { should define_enum_for(:device_type).with(:ios, :android) }
如果您尝试分配任何其他值,ActiveRecord 将引发 ArgumentError(不是有效的 device_type)。
it { should define_enum_for(:device_type).with_values([:ios, :android]) }
关于ruby-on-rails - 使用 shoulda-matchers 检查枚举值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34496020/
我是一名优秀的程序员,十分优秀!