为什么我的测试不通过?
问题描述:
我正在使用Michael Hartl的书来学习rails。我正在讨论关于唯一性验证的部分。我已经逐字逐句复制了它(看起来),但它仍然没有通过。有什么想法吗?为什么我的测试不通过?
User.rb:
class User < ApplicationRecord
validates :name, presence: true, length: {maximum: 50}
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: {maximum: 255},
format: { with: VALID_EMAIL_REGEX},
uniqueness: case_sensitive: false
end
测试/ User_test.rb
require 'test_helper'
class UserTest < ActiveSupport::TestCase
def setup
@user = User.new(name: "Example User", email: "[email protected]")
end
test "email addresses should be unique" do
duplicate_user = @user.dup
duplicate_user.email = @user.email.upcase
@user.save
assert_not duplicate_user.valid?
end
错误:
错误:
UserTest#test_name_should_be_present:
SyntaxError: /home/benjamin/Desktop/Projects/sample_app/app/models/user.rb:6: syntax error, unexpected tLABEL
uniqueness: case_sensitive: false
^
答
你需要写:
uniqueness: { case_sensitive: false }
由于
{a: b: :c}
是一个语法错误。
它是:
{:a=>{:b=>:c}}
或
{{:a=>:b}=>:c}
?
当我被允许时,我会接受你的回答是正确的。 – Benjamints
这是迈克尔的错误,还是轨道改变了?我已经完全按照他的方式写下来了。 – Benjamints
虽然谢谢! – Benjamints