我可以在哪里放置不属于模型的测试数据?

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 复制该条目,因为它在我的文件中使缩进不一致,从而导致解析错误。修复该条目的缩进使解析成功。