我想针对无效电子邮件地址列表进行测试。目前,它们使用我的setup
方法:
def setup
@invalid_email_addresses = [
'plainaddress',
'#@%^%#$@#$@#.com',
'@domain.com',
'Joe Smith <email@domain.com>',
'email.domain.com',
'email@domain@domain.com',
'.email@domain.com',
'email.@domain.com',
'email..email@domain.com',
'あいうえお@domain.com',
'email@domain.com (Joe Smith)',
'email@domain',
'email@-domain.com',
'email@domain.web',
'email@111.222.333.44444',
'email@domain..com'
]
end
这使方法相当长。我想将它们移至yml
文件中:
# test/fixtures/email_addresses.yml
invalid_email_addresses:
- 'plainaddress'
- '#@%^%#$@#$@#.com'
- '@domain.com'
- 'Joe Smith <email@domain.com>'
- 'email.domain.com'
- 'email@domain@domain.com'
- '.email@domain.com'
- 'email.@domain.com'
- 'email..email@domain.com'
- 'あいうえお@domain.com'
- 'email@domain.com (Joe Smith)'
- 'email@domain'
- 'email@-domain.com'
- 'email@domain.web'
- 'email@111.222.333.44444'
- 'email@domain..com'
但这会导致每次测试都出错:
ActiveRecord :: Fixture :: FormatError:夹具密钥不是哈希:/Users/stefan_edberg/Rails/tennis_app/test/fixtures/emaild_addresses.yml,密钥:[“ invalid_email_addresses”]
如果不在固定装置中,这些电子邮件地址应该放在哪里?
答案 0 :(得分:1)
错误共享本身表明在解析YAML内容时存在一些问题。我将以下内容保存在桌面上的文件test.yml
中
# test/fixtures/email_addresses.yml
invalid_email_addresses:
- 'plainaddress'
- '#@%^%#$@#$@#.com'
- '@domain.com'
- 'Joe Smith <email@domain.com>'
- 'email.domain.com'
- 'email@domain@domain.com'
- '.email@domain.com'
- 'email.@domain.com'
- 'email..email@domain.com'
- 'あいうえお@domain.com'
- 'email@domain.com (Joe Smith)'
- 'email@domain'
- 'email@-domain.com'
- 'email@domain.web'
- 'email@111.222.333.44444'
- 'email@domain..com'
,然后尝试从irb
加载它,并成功加载:
请注意:最初,当我复制文件中的YAML内容并尝试加载它时,遇到解析错误,然后删除了以下条目并再次尝试,解析成功
- 'あいうえお@domain.com'`
该条目包含Unicode字符。由于YAML是缩进敏感的,因此按原样复制该条目会导致缩进不一致,从而导致解析错误。修复该条目的缩进使解析成功。