Как собрать элементы для тестирования в самом конце комплекта - PullRequest
0 голосов
/ 03 июля 2019

Я отделил свои тесты от переводов I18n с помощью специального сопоставителя (упрощенная версия:)

RSpec::Matchers.define :use_translation_key do |key|
  match do |block|
    mock_i18n(key) # I believe the implementation is not important here
    block.call
    verify_the_key_was_used(key)
  end

  def supports_block_expectations?
    true
  end
end

пример использования выглядит следующим образом

expect { some_model.decorate.title }.to use_translation_key('some_model.title')

И эта часть работает довольно хорошо,Но после того, как все мои спецификации выполнены, я хочу использовать все key, используемые в этом сопоставителе, и проверить, действительно ли такие ключи определены, чтобы я мог видеть сообщение типа

Вы тестируете этотакие ключи используются, но не определены в переводах:

some_model.title

some_other.made_up.translation-key

и не пройдут тест.

Я знаю, что могу добавить такое утверждение к сопоставителю, но загружаю весь бэкэнд (и у меня есть два из них: Simple + ActiveRecord fallback), и это кажется действительно неэффективным.

Итак, моя проблема:

  1. как правильно сохранить список ключей?Есть ли у RSpec что-нибудь для этого подготовленное?

    match do | block |mock_i18n (ключ) # Я считаю, что реализация здесь не важна block.call verify_the_key_was_used (key) @@ keys_checked_in_the_matcher << key # ???end </p>

  2. как мне их проверить?Я думаю, что могу определить такой хук:

    config.after (: suite) do all_keys = load_all_translations_keys diff = @@ keys_checked_in_the_matcher - all_keys assert (diff) .to be_empty end

Но это не так.Что бы TheRightWay ™ сделал для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...