0

我正在做一些本地化测试,我必须测试英语和日语的字符串。英文字符串可能是“等待时间为 {0} 分钟。” 而日语字符串可能是“待ち时间は{0}分です。”其中 {0} 是一个可以在测试过程中更改的数字。这两个字符串都来自各自的属性文件。我如何能够检查字符串的存在以及可以根据正在运行的测试而改变的数字。

我应该添加一个事实,即我正在网页上检查这些字符串,该网页将根据查看它们的位置以相关语言显示。我正在使用 watir 来验证文本。

4

2 回答 2

0

您可以在其他地方阅读有关测试正确语言转换的最佳方法的各种理论。

一种典型的方法是用常量替换代码中所有硬编码的文本匹配,然后有一个文件来设置可以根据使用的语言更新的常量。(我已经看到通过根据正在测试的语言将该文件的需求包装在案例语句中来完成。另一种方法是每个值的数组或散列,由名称为“语言”的变量枚举,这让测试会即时更改语言。所以验证看起来像这样

b.div(:id => "wait-time-message).text.should == WAIT_TIME_MESSAGE[language]

要匹配部分预期会更改但属于可预测模式的文本,请使用正则表达式。我建议阅读一些关于 ruby​​ 中的正则表达式的文章,尤其是在 ruby​​ 中使用 unicode 正则表达式,以及一些使用Rubular 之类的工具来测试正则表达式的实验

在上述正则表达式的情况下,例如:

/Waiting time is \d+ minutes./或者/待ち時間は\d+分です。/

将匹配上面的消息并期望中间有一个或多个数字(请注意,如果没有数字出现,它会失败,如果你想要零个或多个数字,那么你需要一个 * 代替 +

于 2013-05-16T22:16:08.183 回答
0

不要检查文字字符串。检查可用于呈现最终字符串的某种中间形式。

有时这是通过指定消息和任何占位符数据来完成的,例如:

[ :waiting_time_in_minutes, 10 ]

这将呈现为适当的本地化文本。

另一种方法是将其中一种语言视为模板,这种语言在灵活性上更加有限,但在大多数情况下都可以使用。在这种情况下,您可以使用英文版本作为返回的字符串,并使用帮助程序将其呈现到最终页面。

于 2013-05-13T15:35:25.730 回答