トップ 差分 一覧 ソース ヘルプ RSS ログイン

ClickMockApi

Click Mock API

Click Mock は、Tomcat や Jetty のようなサーブレットコンテナを必要とせずにControl や Page をテストすることが可能となるフルスタックのモックです。

モックのパッケージは、個別のjarで提供されていて、ダウンロードしたClickの配布パッケージで利用可能です。distフォルダの click-mock-<version>.jar がそれになります。

テストのために用いられる、2つの関係するクラス - MocContainerMockContext - が含まれます。

 MockContainer

あなたが作成した Page をテスト(機能テスト)するには、Tomcat や Jetty のようなサーブレットコンテナを模した MockContainer を利用することになります。このコンテナを利用することで、テスト用のページリクエストやフォームサブミット、ファイルのアップロードやナビゲーション等を実行できます。

MockContainer を使用するためには、 javascriptやスタイルシート、画像などのリソースがあるwebディレクトリを指定する必要があります。一番簡単な方法は、プロジェクトのwebディレクトリを指定することでしょう。

例えばプロジェクトが c:\dev\myproject にあるとして、webリソースは c:\dev\myproject\web 以下にあるとします。この場合、単に c:\dev\myproject\web を指定するだけです。

例(ここでは JUnitを使っています):

内部的には、MockContainer は一つの MockContext インスタンスを生成し、 いくつかのサーブレットスタブを作成します。以下そのスタブのリストです。

MockContainer はサーブレットスタブへのアクセスのためのgetterを提供しています。setterメソッドで独自のスタブインスタンスをMockContainer にセットすることも可能です。

独自のスタブをセットした場合には、MockContainerは自分で生成したものではなく、登録されたものを利用します。

生成されたMockContainer は、startstop メソッドでライフサイクルを管理する必要があります。

HTTP のリクエストパラメータは、MockRequest 経由でセットされます。

MockContainer は、このための便利なメソッドを用意しています。すなわち、MockContainer.setParameterMockContainer.setParameter です。

リクエストアトリビュートをセットするために、MockContainer.setAttribute を使います。

以下の例は、一連のテストになります。

この例では、値をmyfieldフィールドにセットしています。また、Click が form を処理しないので、Form.FORM_NAMEパラメータをセットしています。Form.FORM_NAME にはフォームの名前、この例では"form"をセットしなければいけません。

Page の出力は、MockContainer.getHtml() で利用可能です。

 MockContext

MockContext は、カスタムコントロール(コンポーネント)をテストするときに有用です。

MockContext を使用するときに、webディレクトリを指定することは必須ではありません。

例:

MockContext は、コンテキストを初期化するいくつかのinitContextメソッドを提供します。

MonckContext.initContext メソッドは、いくつかのサーブレッドスタブを生成します。以下がそのスタブのリストです。

以下のサンプルコードでは、MockContext が ValidationFieldというカスタムコントロールをテストするのに使用されています。