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