首页 > 解决方案 > 我在测试我的 Rails 应用程序模型时遇到错误

问题描述

嗨,我目前在我的模型中进行测试,我将 .bak 放在了fixtures 中的所有 yml 文件中。

我有这个验证

class Category < ApplicationRecord
belongs_to :user
has_many :tasks

validates :categoryname,presence:true,length:{minimum:5}
validates :categorybody,presence:true,length:{minimum:5}
validates :user_id,presence:true
end

这是我的测试

require "test_helper"

class CategoryTest < ActiveSupport::TestCase

test "should save if category name is more than 4 letters" do
category = Category.new(categoryname: "testing")
assert category.save
end

它符合验证但我收到错误

Failure:
CategoryTest#test_should_save_if_category_name_is_more_than_4_letters 
[/home/azarlorea/journalz/journalv/test/models/category_test.rb:27]:
Expected false to be truthy.

我用相同的代码创建了一个新的 Rails 应用程序,除了我删除了关联和用户 ID 验证,它在那里工作正常。

谢谢

标签: ruby-on-rails

解决方案


显然,category由于存在验证错误,无法保存。

即使您正在检查,categoryname您也需要确保分配了其他必填字段。

您可以尝试像这样测试它

test "should save only if category name is more than 4 letters" do
  user = User.create(mandatory params here...)
  category = Category.new(categoryname: "test", categorybody: "testing", user: user)
  assert_not category.valid?

  category.categoryname = "validname"
  assert category.valid?
end

推荐阅读