首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails模型测试误差/故障

Rails模型测试误差/故障
EN

Stack Overflow用户
提问于 2018-05-14 15:00:07
回答 2查看 410关注 0票数 1

首先,我要说,我对Rails的测试相当陌生。我的测试中有一些错误,我不太清楚为什么。

代码语言:javascript
复制
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

这是密码

user_test

代码语言:javascript
复制
require 'test_helper'

class UserTest < ActiveSupport::TestCase
  def setup
    @user=User.new(email:"fo0@hotmail.com")
  end

  test "user should be valid" do
    assert @user.valid?
  end
end

post_test

代码语言:javascript
复制
require 'test_helper'

class PostTest < ActiveSupport::TestCase
  def setup
    @post=Post.new(:ruby_meetup)
  end

  test "post should be valid" do
    assert @post.valid?
  end

end

user.rb

代码语言:javascript
复制
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
         has_many :posts

          has_many :rsvps
          has_many :posts, through: :rsvps

          validates :email, presence: true

end

post.rb

代码语言:javascript
复制
class Post < ApplicationRecord
belongs_to :user
 geocoded_by :address
after_validation :geocode, if: ->(obj){ obj.address.present? and obj.address_changed? }
reverse_geocoded_by :latitude, :longitude
after_validation :reverse_geocode


  has_many :rsvps
  has_many :users, through: :rsvps

  validates :name, presence: true

end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-14 15:08:14

由于您没有显示任何关于User模型的信息,所以不可能知道为什么它是无效的。但是,在你的测试中,你可以做这样的事情:

代码语言:javascript
复制
puts @user.errors.full_messages

看看问题出在哪里。

在第二个错误中,错误消息会准确地告诉您什么是错误。您不是在new中传递一个new,而是传递一个符号:

代码语言:javascript
复制
def setup
  @post=Post.new(:ruby_meetup)
end

:ruby_meetup应该类似于:

代码语言:javascript
复制
ruby_meetup: 'some_value'
票数 2
EN

Stack Overflow用户

发布于 2018-05-14 20:17:16

这个错误已经解决了。我把这段代码放在我的user_test.rb中

代码语言:javascript
复制
assert @user.valid?, @user.errors.full_messages

修正了错误,我把密码空了。

谢谢大家的帮助,我真的很感激。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50333462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档