我使用自定义匹配器(简化版:)将测试与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),这似乎真的没有效果。
所以我的问题是:
如何正确存储密钥列表? RSpec是否为此准备了一些东西?
match do | block | mock_i18n(key)#我相信这里的实现并不重要 块调用 verify_the_key_was_used(key) @@ keys_checked_in_the_matcher <<键#??? 结束
我该如何测试?我想我可以定义这样的钩子:
config.after(:suite)做 all_keys = load_all_translations_keys 差异= @@ keys_checked_in_the_matcher-all_keys assert(diff).to be_empty 结束
但是感觉不对。 TheRightWay™可以做到这一点?