我已经使用I18n模块为Rails应用程序实现了国际化支持,现在我正在测试这个实现。
我正在使用assert_select进行功能测试来断言没有带有类名“translation_missing”的span HTML元素,这样可以正常工作。
我还编写了一个帮助器方法来从config / locales目录中获取所有语言环境文件,这也很好。
我的问题是当我尝试遍历每个语言环境并检查没有丢失的翻译时。如果一个语言环境的测试失败,它将退出该块,报告失败,而我希望测试继续运行并在适用的情况下输出多个失败消息。这是测试:
test "index page no missing translations" do
# Login as admin to avoid 302 errors
login_as(@user)
# Get a list of the locales
locales = get_locales()
# Check each locale for missing translations
locales.each do |locale|
get :index, :locale => locale
assert_select "span.translation_missing", false, "Broadcasts index page: Translations missing from #{locale}.yml"
end
end
我有什么方法可以阻止该块被退出?
提前致谢。
答案 0 :(得分:4)
您可能应该将其编程,例如像(未经测试的)
get_locales.each do |locale|
test "index page translations #{locale}" do
# Login as admin to avoid 302 errors
login_as(@user)
get :index, :locale => locale
assert_select "span.translation_missing", false, "Broadcasts index page: Translations missing from #{locale}.yml"
end
end
这将导致创建多个测试,每个测试只测试一个区域设置,并且没有一个测试弄乱其他区域的结果。