在我們的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