ruby-on-rails - 无法使用测试单元测试用户名验证

标签 ruby-on-rails unit-testing testing

我的用户模型中有以下验证:

  validates :name, :format => {
    :with    => /^[a-zA-Z]+$/,
    :message => 'Only letters allowed.'
  }

这是我的测试:

  test 'name must consist of letters only' do
    user = User.new(:name => 'test123')
    assert user.errors[:name].any?
  end

测试总是失败。我做错了什么? xD

最佳答案

您的断言与应有的相反。反转断言的条件。

试试这个

test 'name must consist of letters only' do
  user = User.new(:name => 'test123')
  assert !user.valid?
end

此外,尝试使用 validates_format_of 而不是 validate

validates_format_of :name, :with    => /^[a-zA-Z]+$/, :message => 'Only letters allowed.'

关于ruby-on-rails - 无法使用测试单元测试用户名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15323444/

相关文章:

unit-testing - 函数式编程中的测试

javascript - 使用 sinon.fakeServer 获取夹具数据

testing - go中接口(interface)模拟的方法

java - 代码覆盖率导致以下问题

ruby-on-rails - rails prepend_view_path 可安装引擎

ruby-on-rails - Rails 关联 primary_key 选项

python - 你如何模拟一个在单元测试中应用了装饰器的函数?

c++ - 模拟方法的 GoogleTest Expect 调用失败

ruby-on-rails - 是否可以和/或建议在 Rails 中动态生成测试?

ruby-on-rails - 为我的 Ruby on Rails 应用程序重新启动 Thin 时出错