Наше приложение в настоящее время разделяет сообщения между стороной 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);
Это означает, что код больше не может быть проверен юнитом , если только юнит-тесты не определяют глобальную переменную "messages" с правильными вложенными объектами. Это можно обойти? Любая идея, как расширить 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);
Спасибо за любые идеи!