2012-03-02 5 views
1

SmartGWT Webアプリケーションでは、ドメインオブジェクトをサーバーからクライアントに渡し、GWT直列化を使用して戻します。 DynamicFormまたはGridListのクライアント側でデータを表示/編集するには、Record(またはListGridRecord)に変換し、ドメインオブジェクトに編集して戻す必要があります。ユニットテストはどのようにSmartGWTクラスを使用できますか?

レコードのgetAttributesetAttribute方法がJSOHelper.getAttribute/JSOHelper.setAttributeで実現するための静的メソッドがnativeとして宣言され、実装されていた、私はこの変換方法にユニットテストを書きたいと思いますが、JUnitの中に簡単な試みが失敗しましたJavaScriptでJSNIによって使用されるため、JavaScriptでコンパイルされた場合にのみクライアント側でのみ使用できます。

ネイティブメソッドが実装されていないため、JUnitからこれらのメソッドを使用するとUnsatisfiedLinkErrorが発生します。

どのように私はこれらのクラスをテストできましたか?

これらの重要なメソッドは、単純なHashMap(または属性の順序が重要な場合はLinkedHashMap)で簡単に実装できます。実際にはJavaScriptオブジェクトはそのメソッドではなくデータ部分を見るだけです。したがって、私はJavaScriptの代わりにJavaの実装で、いくつかの選択されたSmartGWTクラス(主にJSOHelper)の代替実装を提供することを考えています。

しかし、私は本当にこの問題を抱えている最初の人ですか?既存のソリューションを見つけるにはあまりにも愚かですか?

+0

関連しています(実際には役に立ちません):[GWT:単体テスト/モックJSNIメソッドのベストプラクティス?](http://stackoverflow.com/questions/2543462/gwt-best-practice-for-unit test-mocking-jsni-methods) –

答えて

0

コードでMVPまたはMVCパターンを使用した場合は、ビューコードをmockitoのようにモックし、残りのアプリケーションをすべてテストしてください。ビューコードをテストするには、Seliniumのようなものを使う必要があります。jwコードの周りのgwtラッパーなので、gwtTestCaseはsmartGWTで動作するとは思いません。

+0

私はMVPを使用していますが、私がテストしたいクラスは、実際にビューの一部です(またはそのように考えることもできます)。これは純粋なデータクラス(GUIはありません)のみに関係しますが、ここで問題となるJavaScriptオブジェクトによって表されるデータクラスです。 –

+0

おそらく、解決されていないメソッドのJavaバージョンを書くことができます。 – Deanna

+0

ええ、それは私の考えでしたが、他の誰かがすでにそれをやりたかったので、ここで私の質問です。 –

関連する問題