我可以在哪里放置不属于模型的测试数据?
Where can I put test data that is not part of a model?
我想针对无效电子邮件地址列表进行测试。目前,他们住在我的 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: fixture key is not a hash: /Users/stefan_edberg/Rails/tennis_app/test/fixtures/emaild_addresses.yml, keys: ["invalid_email_addresses"]
如果不在固定装置中,我应该将这些电子邮件地址放在哪里?
共享的错误本身表明在解析 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 是 indentation-sensitive 复制该条目,因为它在我的文件中使缩进不一致,从而导致解析错误。修复该条目的缩进使解析成功。
我想针对无效电子邮件地址列表进行测试。目前,他们住在我的 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: fixture key is not a hash: /Users/stefan_edberg/Rails/tennis_app/test/fixtures/emaild_addresses.yml, keys: ["invalid_email_addresses"]
如果不在固定装置中,我应该将这些电子邮件地址放在哪里?
共享的错误本身表明在解析 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 是 indentation-sensitive 复制该条目,因为它在我的文件中使缩进不一致,从而导致解析错误。修复该条目的缩进使解析成功。