在我们的SmartGWT Web应用程序中,我们将域对象从服务器传递到客户端并返回(通过GWT序列化)。要在DynamicForm或GridList中显示/编辑客户端的数据,我们必须将其转换为Record(或ListGridRecord),并在编辑回我们的域对象之后。单元测试如何使用SmartGWT类?
我想编写一个单元测试这种转换方法,但在JUnit的一个简单的尝试失败,因为记录的getAttribute
和setAttribute
方法由JSOHelper.getAttribute
/JSOHelper.setAttribute
,这是宣布为native
并实现静态方法来实现由JSNI在JavaScript中进行编译,因此只有在编译为JavaScript时才可用于客户端。
从JUnit使用这些方法时,我们得到一个UnsatisfiedLinkError,因为本地方法没有在那里实现。
任何想法我可以测试这些类吗?
这些关键方法可以通过简单的HashMap轻松实现(如果属性顺序很重要,也可以是LinkedHashMap) - 实际上JavaScript对象就是关于这个的,如果只看数据部分而不是方法。因此,我只是考虑用Java实现而不是JavaScript提供一些选定的SmartGWT类(主要是JSOHelper)的替代实现。
但我真的是第一个有这个问题的人吗?我是不是很傻,找不到现有的解决方案?
相关(但这里没有真正帮助):[GWT:单元测试/模拟JSNI方法的最佳实践?](http://stackoverflow.com/questions/2543462/gwt-best-practice-for-unit -testing-mocking-jsni-methods) – 2012-03-02 19:09:00