Где можно разместить тестовые данные, которые не являются частью модели? - PullRequest
0 голосов
/ 09 июля 2019

Я хочу проверить список недействительных адресов электронной почты. На данный момент они живут по моему 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"]

Если не в фикстурах, где я должен поместить эти адреса электронной почты?

1 Ответ

1 голос
/ 10 июля 2019

Ошибка совместного использования сообщает о том, что существует некоторая проблема при разборе содержимого 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, и он успешно загрузился:

enter image description here

Обратите внимание : Первоначально, когда я скопировал содержимое YAML, как оно есть в моем файле, и попытался загрузить его, я столкнулся с ошибкой синтаксического анализа, а затем я удалил следующую запись и повторил попытку, и анализ был успешным

- 'あいうえお@domain.com'`

Эта запись содержит символы Юникода. Поскольку YAML чувствительно к отступам, копирование этой записи, как и в моем файле, сделало отступы несовместимыми, что привело к ошибке разбора. Исправление отступа для этой записи сделало анализ успешным.

...