模型的 rails 单元测试返回无效结果

Posted

技术标签:

【中文标题】模型的 rails 单元测试返回无效结果【英文标题】:rails unit tests for model returns invalid result 【发布时间】:2021-07-03 07:08:34 【问题描述】:

我在我的 Rails 应用程序中定义了以下模型:

class Product < ApplicationRecord
  validates :title, :description, :image_url, presence: true
  validates :price, numericality: greater_than_or_equal_to: 0.01
  validates :title, uniqueness: true
  validates :image_url, allow_blank: true, format: 
    with: %r\.(gif\\png\\jpg)\zi,
    message: 'must be a URL for GIf, PNG or JPG image'
  
end

以下是该模型的架构:

class CreateProducts < ActiveRecord::Migration[6.1]
  def change
    create_table :products do |t|
      t.string :title
      t.text :description
      t.string :image_url
      t.decimal :price, precision: 8, scale: 2

      t.timestamps
    end
  end
end

以下是我的模型的单元测试:

test "product price should be greater than 0" do
    product = Product.new(title: "abc", description: "abc", image_url: "abc.gif")
    product.price = 20.00
    assert product.valid?
end

当我使用 bin\rails test:models 运行这个测试时,它失败了,说断言失败。由于我将价格设置为大于 0.01,它应该已经过去了。有人可以解释为什么这里的测试失败了吗?

【问题讨论】:

【参考方案1】:

请原谅我的错误,我发现验证我的 image_url 字段的正则表达式是错误的。我不得不使用| 运算符而不是\\。修复此错误后,测试运行良好。

【讨论】:

以上是关于模型的 rails 单元测试返回无效结果的主要内容,如果未能解决你的问题,请参考以下文章

如何进行高效的Rails单元测试

为啥我在我的 Rspec 模型测试中得到单元化常量?

前端单元测试

如何运行单元测试项目并将结果返回给外部应用程序?

如何进行高效的Rails单元测试

Ruby on Rails 单元测试