Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails模型测试错误/失败_Ruby On Rails_Ruby_Unit Testing - Fatal编程技术网

Ruby on 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的测试相当陌生。我在测试中遇到了一些错误,我不知道为什么

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