=begin = 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 == HtmlElem tree に含めたくない場合は (({WebUnit::Parser::ignore})) で不要なタグを指定しておくことが可能。 == フォームのテスト === テスト対象 !block example
!endblock === テスト準備 !block example response = Response::get( url ) form = response.form parameters = form.parameters !endblock === テキストフィールドなどのテスト テキストフィールドなど(hiddenやpassword)は以下のようにして、 それぞれの属性の値を取得することができる。 (1)から(4)は等価であるので、テスト仕様として見やすいものを採用する。 !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
EUC SJIS
JIS UTF-8
!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 == パラメータの数 : Form#params これは Hash。ユニークな名前を持つ Param。 : Form#parameters これは Array。Paramの数。 name属性に同じものが無ければ、この二つは同じ値となる。 == 省略形 * Response#form → Response#forms[0] * Response#link → Response#links[0] * Response#open → Response#opens[0] * Response#table → Response#tables[0] * Response#frame → Response#frames[0] * Response#params → Response#forms[0].params # $Id: TIPS-ja.rd,v 1.1.1.1 2003/01/21 11:50:39 yuichi Exp $ =end