Ruby on rails Rails模型测试错误/失败
首先,我要说的是,我对Rails的测试相当陌生。我在测试中遇到了一些错误,我不知道为什么Ruby on rails Rails模型测试错误/失败,ruby-on-rails,ruby,unit-testing,Ruby On Rails,Ruby,Unit Testing,首先,我要说的是,我对Rails的测试相当陌生。我在测试中遇到了一些错误,我不知道为什么 rails test:models Run options: --seed 21021 # Running: F Failure: UserTest#test_user_should_be_valid [/home/ubuntu/workspace/test/models/user_test.rb:9]: Expected false to be truthy. bin/rails test te
rails test:models
Run options: --seed 21021
# Running:
F
Failure:
UserTest#test_user_should_be_valid [/home/ubuntu/workspace/test/models/user_test.rb:9]:
Expected false to be truthy.
bin/rails test test/models/user_test.rb:8
E
Error:
PostTest#test_post_should_be_valid:
ArgumentError: When assigning attributes, you must pass a hash as an argument.
test/models/post_test.rb:5:in `setup'
bin/rails test test/models/post_test.rb:8
Finished in 0.237740s, 8.4126 runs/s, 4.2063 assertions/s.
2 runs, 1 assertions, 1 failures, 1 errors, 0 skips
这是密码
用户测试
需要“测试助手”
类UserTest
产后试验
需要“测试助手”
类PostTest
user.rb
class用户
post.rb
class Post(obj){obj.address.present?和obj.address_changed?}
反向地理编码:纬度,经度
验证后:反向地理编码
有很多:RSVP
通过::rsvps拥有多个:用户
验证:名称,状态:true
结束
由于您没有显示有关您的用户的任何信息
型号,因此不可能知道它为什么无效。但是,在您的测试中,您可以执行以下操作:
puts @user.errors.full_messages
看看问题出在哪里
在第二个错误中,错误消息会准确地告诉您出了什么问题。您没有在新建
中传递哈希
,而是传递了一个符号:
def setup
@post=Post.new(:ruby_meetup)
end
:ruby_meetup
应该类似于:
ruby_meetup: 'some_value'
这个错误已经解决了。我把这段代码放在我的user_test.rb中
assert @user.valid?, @user.errors.full_messages
并修复了我留下的密码为空的错误
谢谢大家的帮助,我非常感谢。测试失败说明
User.new(电子邮件:fo0@hotmail.com“
和Post.new(:ruby_meetup)
是无效记录。错误是什么?(您是否查看过例如@user.errors.messages
?)什么是user
和Post
模型?可能您还有其他一些验证规则,例如验证:名称,状态:true
?您没有向我们显示模型,也没有显示错误消息,因此我只能推测原因。@post=post.new(:ruby\u meetup)
您正在将符号作为参数传递,而构造函数需要散列,为什么不影响此符号的值?例如Post.new ruby_meetup:true
或Post.new type::ruby_meetup
,请将您的代码放入Post模型,以便我们可以更准确地帮助您。第一个“错误”是您希望@user.valid?
为true
,但它不是。因此,您的用户模型中可能有一些验证需要的不仅仅是电子邮件。至于第二个错误,它来自于执行Post.new(:ruby_meetup)
,ruby_meetup
是一个键,Post.new
需要一个散列作为参数,就像您在User.new(电子邮件:fo0@hotmail.com“
post-test
非常明确地告诉您做错了什么:分配属性时,必须将哈希作为参数传递。“:ruby_meetup
不是散列,您缺少密钥。很抱歉,我添加了post模型和用户模型。我现在添加了post模型和用户模型。谢谢。您从@user.errors.full_消息中得到了什么?”?您是否将符号
更改为散列
并解决了第二个错误?当我输入@user.errors.full_messages时,我得到了一个无方法错误。对于第二个,我得到了一个未知属性错误@post=post.new(ruby_meetup:'true')这就是我的代码看起来的样子,可能是我编错了?编辑:我已经将代码更改为@post=post.new(user\u id:“1”)这样,现在我在我的user\u test.rb文件中得到了与我的user.test相同的错误?
puts @user.errors.full_messages
def setup
@post=Post.new(:ruby_meetup)
end
ruby_meetup: 'some_value'
assert @user.valid?, @user.errors.full_messages