在我们的SmartGWT Web应用程序中,我们将域对象从服务器传递到客户端并返回(通过GWT序列化)。要在DynamicForm或GridList中显示/编辑客户端的数据,我们必须将其转换为Record(或ListGridRecord),然后再编辑回我们的域对象。
我想为此转换方法编写单元测试,但是JUnit中的直接尝试失败,因为记录的getAttribute
和setAttribute
方法是由{实现的{3}} / JSOHelper.getAttribute
,它们是声明为native
的静态方法,由JavaScript中的JSNI实现,因此在编译为JavaScript时只能在客户端使用。
我们在使用JUnit中的这些方法时遇到UnsatisfiedLinkError,因为那里没有实现本机方法。
我是如何测试这些课程的?
这些关键方法可以通过简单的HashMap(或者可能是LinkedHashMap,如果属性顺序很重要)轻松实现 - 实际上JavaScript对象就是这样,如果只查看数据部分,而不是方法。因此,我只考虑使用Java实现而不是JavaScript实现一些选定的SmartGWT类(主要是JSOHelper)的替代实现。
但我真的是第一个遇到这个问题的人吗?我找到现有的解决方案真是太愚蠢了吗?