如何收集要在套件末尾进行测试的元素

时间:2019-07-03 12:41:47

标签: rspec

我使用自定义匹配器(简化版:)将测试与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(key)#我相信这里的实现并不重要     块调用     verify_the_key_was_used(key)     @@ keys_checked_in_the_matcher <<键#???   结束

  2. 我该如何测试?我想我可以定义这样的钩子:

    config.after(:suite)做    all_keys = load_all_translations_keys    差异= @@ keys_checked_in_the_matcher-all_keys    assert(diff).to be_empty 结束

但是感觉不对。 TheRightWay™可以做到这一点?

0 个答案:

没有答案