如何测试枚举验证



我有一个变量,它有一组特定的答案选项。在我的模型中,我有:

validates :article_type,  presence: true
enum article_type:        [ :type1, :type2, :type3 ]

我有以下模型测试:

test "type test" do
  assert @article.valid?
  @article.article_type= "type1"
  assert @article.valid?
  @article.article_type= "type5"
  assert_not @article.valid?
end

错误:@article.article_type= "type5"行生成错误:CCD_ 2。

对于包括无效数据然后使用assert_not的所有其他类型的验证,这些类型的测试都有效。在这种情况下为什么不呢?我应该如何重写这个模型测试?

以下是Rails团队的解释:https://github.com/rails/rails/issues/13971

如果要测试无效值是否被拒绝,请使用assert_raises以期望ArgumentError

test "type test" do
  assert @article.valid?
  
  @article.article_type = "type1"
  assert @article.valid?
  assert_raises ArgumentError do
    @article.article_type = "type5"
    assert_not @article.valid?
  end
end

最新更新