1

SmartGWT Web アプリケーションでは、ドメイン オブジェクトをサーバーからクライアントに渡し、(GWT シリアライゼーションを介して) 戻します。クライアント側で DynamicForm または GridList のデータを表示/編集するには、データをRecord (またはListGridRecord ) に変換し、編集後にドメイン オブジェクトに戻す必要があります。

この変換メソッドの単体テストを書きたいのですが、レコードgetAttributesetAttributeメソッドがJSOHelper.getAttribute/によって実装されているため、JUnit での単純な試みは失敗します。これは、JavaScript で JSNI によってJSOHelper.setAttribute宣言および実装された静的メソッドであるため、クライアントでのみ使用できます。 nativeJavaScript にコンパイルされた場合。

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

これらのクラスをテストする方法はありますか?

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

しかし、私は本当にこの問題を抱えた最初の人ですか? 私は単に愚かすぎて既存の解決策を見つけることができませんか?

4

1 に答える 1

0

コードで MVP または MVC パターンを使用している場合は、 mockitoなどでビュー コードをモックし、残りのアプリケーションをすべてテストしてください。ビュー コードをテストするには、 Seliniumなどを使用する必要があり ます。gwtTestCase は、js コードの単なる gwt ラッパーであるため、smartGWT では機能しないと思います。

于 2012-03-02T20:30:07.427 に答える