В нашем веб-приложении SmartGWT мы передаем наши объекты домена с сервера на клиент и обратно (через сериализацию GWT). Чтобы отображать/редактировать данные на стороне клиента в DynamicForm или GridList, мы должны преобразовать его в Record (или ListGridRecord) и после редактирования обратно в наши объекты домена.Как модульные тесты могут использовать классы SmartGWT?
Я хотел бы написать тест в блок для этого метода преобразования, а просто попытка в JUnit не удается, так как рекорд по getAttribute
и setAttribute
методы реализуются JSOHelper.getAttribute
/JSOHelper.setAttribute
, которые являются статическими методами, объявленные как native
и внедренных JSNI в JavaScript, поэтому можно использовать только на стороне клиента при компиляции на JavaScript.
При использовании этих методов из JUnit мы получаем UnsatisfiedLinkError, так как там не реализованы собственные методы.
Любые идеи, как я мог тестировать эти классы?
Эти критические методы могут быть легко реализованы с помощью простой HashMap (или, возможно, LinkedHashMap, если порядок атрибутов важен) - на самом деле объект JavaScript относится к этому, если смотреть только на часть данных, а не на методы. Таким образом, я просто думаю об альтернативной реализации некоторых выбранных классов SmartGWT (в основном JSOHelper) с реализациями Java вместо JavaScript.
Но я действительно первый, у кого есть эта проблема? Я просто слишком глуп, чтобы найти существующее решение?
Связанный (но на самом деле не помогает здесь): [GWT: Лучшая практика для модульного тестирования/издевательских методов JSNI?] (Http://stackoverflow.com/questions/2543462/gwt-best-practice-for-unit -testing-mocking-jsni-methods) –