|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
WebUnit TipsベースとなるURLを決めるテストはどこのマシンでも動作することができるように、例えば、テストしようとする アプリケーションのURLが http://kona.xxx.jp/~yuichi/tmp/test/ の下にあるならば、 このURLを環境変数URLBASEへ設定する。 テストケースの中では @urlbase として参照する。 レスポンスを受け取る!block example url = @urlbase + 'xxx/xxxx.html' response = Response::get( url ) !endblock HtmlElemtree に含めたくない場合は フォームのテストテスト対象!block example <form action="xxxx" method="POST"> <input type="text" name="login" value="x"> <form> !endblock テスト準備!block example response = Response::get( url ) form = response.form parameters = form.parameters !endblock テキストフィールドなどのテストテキストフィールドなど(hiddenやpassword)は以下のようにして、 それぞれの属性の値を取得することができる。
!block example assert_input( 'login', 'text', 'x', parameters[0] ) # ---(1) spec = { 'name'=>'user', 'type'=>'text', 'value'='x' } # ---(2) assert_attrs( spec, parameters[0] ) # ---(2) assert_equals( 'login', parameters[0].name ) # ---(3) assert_equals( 'text', parameters[0].type ) # ---(3) assert_equals( 'x', parameters[0].value ) # ---(3) assert_equals( 'login', parameters[0].attrs['name'] ) # ---(4) assert_equals( 'text', parameters[0].attrs['type'] ) # ---(4) assert_equals( 'x', parameters[0].attrs['value'] ) # ---(4) !endblock テーブルのテストテスト対象!block example <table> <tr bgcolor='white'> <td>EUC</td> <td><a href='sjis.html'>SJIS</a></td> </tr> <tr bgcolor='red'> <td><a href='jis.html'>JIS</a></td> <td>UTF-8</td> </tr> </table> !endblock テスト準備!block example response = Response::get( url ) table = response.tables[0] !endblock テーブルセルのテスト単純な文字列をテストする場合、以下の2つの方法で記述できる。 assert_equals( "EUC", table.at(1,1).data ) # a. assert_include( "EUC", table.at(1,1) ) # b. リンクが設定されている文字列をテストしたい場合は リンク自体の data をテストする必要がある。 このため、c. はfailするので、d. か e. の形式で記述する必要がある。 e. の記述を行うとその他のタグで囲まれていても成功する。 assert_equals( "SJIS", table.at(1,2).data ) # c. assert_equals( "SJIS", table.at(1,2).find("a").data ) # d. assert_include( "SJIS", table.at(1,2) ) # e. また、特定の HtmlElem が特定のセルに含まれている必要がある場合、 f. のように記述することができる。 assert( table.at(2,1).has?( response.links[1] ) ) # f. テーブル行のテスト行の属性をテストする。 assert_equals( 'red', table.at(2).attrs['bgcolor'] ) 行に含まれるデータをテストする assert_include( "SJIS", table.at(1) ) リダイレクトHTTPリダイレクトレスポンスがHTTPリダイレクトだと分かっている場合は以下のように記述する ことができる。HTTPリダイレクト(コード:302)でない場合は、例外が発生する。 response = Response::get( url ).redirect JavaScriptによるリダイレクト(open)response = Response::get( url ).open.read response = Response::get( url ).opens[0].read パラメータの数
name属性に同じものが無ければ、この二つは同じ値となる。 省略形
|