【问题标题】:problems with unit test in railsrails中单元测试的问题
【发布时间】:2012-07-09 17:51:45
【问题描述】:

我正在尝试运行我的简单 UserTest

require 'test_helper'

class UserTest < ActiveSupport::TestCase

  fixtures :users

  test "user attributes must not be empty" do
    user = users(:valid_user)
    assert user.invalid?
    assert user.errors[:nome].any?
    assert user.errors[:cognome].any?
    assert user.errors[:localita].any?
    assert user.errors[:provincia].any?
    assert user.errors[:nazione].any?
    assert user.errors[:cap].any?
    assert user.errors[:indirizzo].any?
    assert user.errors[:civico].any?
    assert user.errors[:telefono].any?
    assert user.errors[:mail].any?
    assert user.errors[:username].any?
    assert user.errors[:password].any?
  end

end

使用这个 users.yaml

valid_user:
  nome: prova
  cognome: prova
  localita: prova
  provincia: prova
  nazione: prova
  cap: 00000
  indirizzo: strada di prova
  civico: 1
  telefono: 1111111111
  mail: prova@prova.com
  username: prova
  password: prova

但它返回此错误:

加载套件 /var/lib/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_test_loader 开始 F 0.182523 秒完成。

1) 失败:test_user_attributes_must_not_be_empty(UserTest) [../unit/user_test.rb: 10]:断言失败,没有给出消息。

1 次测试,2 次断言,1 次失败,0 次错误,0 次跳过

有什么问题?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 unit-testing


    【解决方案1】:

    好吧,失败的断言是

    assert user.errors[:nome].any?
    

    表示属性:nome没有错误

    你为什么断言该属性应该有错误对我来说完全是个谜

    也许您想使用errors[:nome].none?

    【讨论】:

    • 感谢您的回答,现在效果很好,我是 Rails 单元测试的新手,我正在努力学习它。再次感谢
    • 很高兴我可以帮助你,作为一个经验法则 - 你不必重新测试一般的 Rails 功能(如果你对你的模型进行了验证,他们会在保存它时失败)并尝试使用更多不言自明的断言方法,如 assert_equal 和朋友——这将使测试读起来更好,你会立即发现这些错误。祝你好运!
    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2011-05-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多