gpt4 book ai didi

ruby-on-rails - Ensure_inclusion_of 在应该失败时继续通过?

转载 作者:行者123 更新时间:2023-12-04 18:12:26 25 4
gpt4 key购买 nike

我正在使用 ShouldaRspec用于检测。

当我在我的测试规范中尝试这个时,当我没有在模型中进行验证时它会一直通过:

it { should ensure_inclusion_of(:private).in_array(%w[true false]) }

该属性是一个 bool 值,为真或假:
validates_inclusion_of :private, :in => [true, false]

我该如何正确地写这个?

最佳答案

TrueFalse不是字符串,所以不要使用 %w。

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

更新 - 2014 年 4 月 10 日

根据 this recent commit,此验证在当前版本的 Shoulda 中不起作用。 ,它不会被修复,而是会引发异常。

由于分配给 bool 字段的任何值都将被强制转换为 true(由 true, 1, '1', 't', 'T', 'true', 'TRUE' 设置)或 false(由其他任何设置),因此我测试 bool 字段的首选方法如下:
  • 对于允许在数据库中使用空值的 bool 值 - 不需要测试,任何可能的值都是有效的
  • 对于不允许在数据库中使用空值的 bool 值 - 使用 it { should_not allow_value(nil).for(:field)这将在 validates :field, inclusion: { in: [true,false] } 时通过在模型
  • 上设置

    关于ruby-on-rails - Ensure_inclusion_of 在应该失败时继续通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12357165/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com