gpt4 book ai didi

mysql - 试图了解 Rails 测试的工作原理并遇到模型问题

转载 作者:行者123 更新时间:2023-11-28 21:38:08 25 4
gpt4 key购买 nike

使用 https://guides.rubyonrails.org/testing.html学习如何开发自动化测试。我运行了 rails db:test:prepare 然后编辑了默认的 ./test/model/user_test.rb (我有一个用户模型)。这个测试看起来很简单,但我收到以下错误:

Mysql2::Error: Field 'screen_name' doesn't have a default value

这应该是真的,因为我要求该字段不是 Null 并且我不想要默认值。我想要输入一个值。数据库模式是这样设置的。

无论我做什么,我都会收到此错误。我尝试运行默认 Controller 测试,但它得到了同样的错误。

我想推断这个测试到底在做什么,因为没有真正的描述。也许这不是一个有效的测试只是一些脚手架?

因未输入值而失败的测试当然是我最终需要的测试。我似乎没有从本指南中获得所需的说明,是否有更好的起点。

我尝试了以下方法:

@User = users.new
@User.screen_name = "Name"
...
@User.save

得到了同样的结果,似乎只是针对这个模型运行测试试图在我做任何事情之前创建一个空表条目。真的吗?如果是这样,我该如何处理它而不提供任何默认值。

默认 Controller 测试得到完全相同的结果。

./test/model/user_test.rb:

require 'test_helper'

class UserTest < ActiveSupport::TestCase
test "the truth" do
assert true
end
end

MySQL 表描述:

mysql> desc users;
+-----------------+--------------+------+-----+---------+--------------
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+--------------
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| screen_name | varchar(255) | NO | | NULL | |
| email | varchar(255) | NO | | NULL | |
| password_digest | varchar(255) | NO | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-----------------+--------------+------+-----+---------+--------------

我不知道会发生什么,但我没想到我会得到什么。多年来,我学会了从默认开始并逐步建立。

在进程 15156 中通过 Spring 预加载器运行运行选项:--seed 50091

运行:

Error: UserTest#test_the_truth: Mysql2::Error: Field 'screen_name' doesn't have a default value bin/rails test test/models/user_test.rb:4 Finished in 0.006803s, 146.9987 runs/s, 0.0000 assertions/s. 1 runs, 0 assertions, 0 failures, 1 errors, 0 skips

最佳答案

这是因为您在 User 表上声明了 null false 条件。 Rails 在运行每个测试之前加载所有固定装置,因此当固定装置 test/fixtures/users.yml 运行时,Rails 会引发错误,因为固定装置没有数据库所需的值。

解决这个问题的方法是删除夹具:test/fixtures/users.yml 或在夹具中添加正确的、必要的值。

当遵循该指南时,固定装置会自动生成。这就是我如何知道您有一个供用户使用的方式。

大概是这样的:

user:
id: 1
screen_name: Spongebob Squarepants # this might be missing!
email: squidwards_bestie@thebottomofthesea.com

关于mysql - 试图了解 Rails 测试的工作原理并遇到模型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715944/

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