我们的应用程序当前在 Java 和 Javascript 端之间共享消息。它们作为资源包存储在类路径中,我们有一个自定义控制器,它将所有消息作为 Json 返回。客户端代码如下所示:
// This calls the controller to get all the messages
var messages = MessageBundle();
var text = messages.get('my.message', 1);
这很棒,因为我们可以在单元测试中模拟“消息”。
我想为此开始使用JAWR,因为我们已经将它用于其他事情。问题是 JAWR生成以下 Javascript 对象:
var text = messages.my.message(1);
这意味着代码不能再进行单元测试,除非单元测试还定义了一个带有正确嵌套对象的全局“消息”变量。有没有解决的办法?知道如何扩展 JAWR 以使这个单元可测试吗?
目前我的工作是:
function messages() {
var args = Array.prototype.slice.call(arguments);
var messageId = args.shift();
var messageFunc = window.messages;
messageId.split('.').forEach(function(part) {
messageFunc = messageFunc[part];
});
return messageFunc(args);
}
// Same syntax as the old one, but uses the JAWR object behind the scenes
// This function is easy to mock for a unit test
var text = messages('my.message', 1);
感谢您的任何想法!