前回の続き。
とりあえず1.4にバージョンアップした。
http://www.symfony-project.org/tutorial/1_4/ja/upgrade
フォームのテストを行います。
http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/11
のっけから疎結合が云々よくわからないことを言ってますがどうせ使うことはないのでいいです。
Symfonyの部品を使うくらいならZFを使った方が楽でしょう。
まあsfFormが使えれば楽かもしれませんが使い方がわからん。
まず作成するのは新規記事作成ページを取得するメソッドチェーン。
test/functional/frontend/jobActionsTest.php
http://symfony.localhost/frontend_dev.php/job/new
のリンクに行ったらjobモジュールのnewアクションが起動するよ、という内容です。
早速実行してみます。
>php test/functional/frontend/jobActionsTest.php
> 3 - Post a Job page
> 3.1 - Submit a Job
# get /job/new
ok 16 - request parameter module is job
ok 17 - request parameter action is new
正しく動作したようです。
次に、フォームに値を突っ込むテストをしてみます。
なんか複数の事柄がまとめて書かれているのでいまいちわかりづいらいんですが、順番に見ていきます。
>より明確にするために、JobeetJobForm の configure() メソッドの終わりで
>次のコードを追加することでフォーマットを job[%s] に変更してみましょう:
lib/form/doctrine/JobeetJobForm.class.php
これはフォームのフィールド名を変えます。
デフォルトではフィールド名はフォームクラス名そのまま、
となっています。
setNameFormat()を実行することで任意のフィールド名に変更することができます。
上記の場合、
となります。
なにが明確になるのかはよくわからないのですが。
>すでにリンクのクリックをシミュレートするために click() メソッドを使いました。
>同じ click() メソッドはフォームを投稿するために使うことができます。
>フォームに関して、メソッドの2番目の引数としてそれぞれのフィールドに対して投稿する値を渡すことができます。
>実際のブラウザーのように、ブラウザーオブジェクトはフォームのデフォルト値と投稿された値をマージします。
何度読んでも意味がわかりませんが、click()メソッドに値を突っ込めば$_REQUESTに追加されるよ、という意味のようです。
$_GETなのか$_POSTなのかはいまいちわかりません。
test/functional/frontend/jobActionsTest.php
新規記事作成ページを取得し、[job]フォームの各フィールドに値を記入し、「Preview your job」のリンクをクリックするとjobアクションのcreateメソッドが動きますよ、の意味となります。
実行してみましょう。
>php test/functional/frontend/jobActionsTest.php
Parse error: syntax error, unexpected ';', expecting T_STRING or T_VARIABLE or '{' or '$' in \symfony\test\functional\frontend\jobActionsTest.php on line 91
お。
なんか最後がend()->;ってなってるせいです。
end();にすると実行に成功します。
>php test/functional/frontend/jobActionsTest.php
> 3 - Post a Job page
> 3.1 - Submit a Job
# get /job/new
ok 16 - request parameter module is job
ok 17 - request parameter action is new
# post /job
ok 18 - request parameter module is job
ok 19 - request parameter action is create
ちなみに投稿したデータは挿入に成功すれば実際に保存されます。
ただし、バリデータやフィールドをチェックしておらず、'logo'=>'a'とか'hoge'=>'fuga'とかありえないデータを突っ込んでもテストに通ってしまいます。
あとテストを実行するたびにjobeet_testのデータが総刷新されるんだがなんだこれ。
とりあえず1.4にバージョンアップした。
http://www.symfony-project.org/tutorial/1_4/ja/upgrade
フォームのテストを行います。
http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/11
のっけから疎結合が云々よくわからないことを言ってますがどうせ使うことはないのでいいです。
Symfonyの部品を使うくらいならZFを使った方が楽でしょう。
まあsfFormが使えれば楽かもしれませんが使い方がわからん。
まず作成するのは新規記事作成ページを取得するメソッドチェーン。
test/functional/frontend/jobActionsTest.php
1
2
3
4
5
6
7
8
9
10
11
|
//記事新規作成
$browser->info('3 - Post a Job page')->
info(' 3.1 - Submit a Job')->
get('/job/new')->
with('request')->begin()->
isParameter('module', 'job')->
isParameter('action', 'new')->
end()
;
|
http://symfony.localhost/frontend_dev.php/job/new
のリンクに行ったらjobモジュールのnewアクションが起動するよ、という内容です。
早速実行してみます。
>php test/functional/frontend/jobActionsTest.php
> 3 - Post a Job page
> 3.1 - Submit a Job
# get /job/new
ok 16 - request parameter module is job
ok 17 - request parameter action is new
正しく動作したようです。
次に、フォームに値を突っ込むテストをしてみます。
なんか複数の事柄がまとめて書かれているのでいまいちわかりづいらいんですが、順番に見ていきます。
>より明確にするために、JobeetJobForm の configure() メソッドの終わりで
>次のコードを追加することでフォーマットを job[%s] に変更してみましょう:
lib/form/doctrine/JobeetJobForm.class.php
1
2
|
$this->widgetSchema->setNameFormat('job[%s]');
|
これはフォームのフィールド名を変えます。
デフォルトではフィールド名はフォームクラス名そのまま、
1
|
<input type="text" name="jobeet_job[company]" id="jobeet_job_company" />
|
となっています。
setNameFormat()を実行することで任意のフィールド名に変更することができます。
上記の場合、
1
|
<input type="text" name="job[company]" id="job_company" />
|
となります。
なにが明確になるのかはよくわからないのですが。
>すでにリンクのクリックをシミュレートするために click() メソッドを使いました。
>同じ click() メソッドはフォームを投稿するために使うことができます。
>フォームに関して、メソッドの2番目の引数としてそれぞれのフィールドに対して投稿する値を渡すことができます。
>実際のブラウザーのように、ブラウザーオブジェクトはフォームのデフォルト値と投稿された値をマージします。
何度読んでも意味がわかりませんが、click()メソッドに値を突っ込めば$_REQUESTに追加されるよ、という意味のようです。
$_GETなのか$_POSTなのかはいまいちわかりません。
test/functional/frontend/jobActionsTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//記事新規作成
$browser->info('3 - Post a Job page')->
info(' 3.1 - Submit a Job')->
get('/job/new')->
with('request')->begin()->
isParameter('module', 'job')->
isParameter('action', 'new')->
end()->
click('Preview your job', array('job' => array(
'company' => 'Sensio Labs',
'url' => 'http://www.sensio.com/',
'logo' => sfConfig::get('sf_upload_dir').'/jobs/sensio-labs.gif',
'position' => 'Developer',
'location' => 'Atlanta, USA',
'description' => 'You will work with symfony ',
'how_to_apply' => 'Send me an email',
'email' => 'for.a.job@example.com',
'is_public' => false,
)))->
with('request')->begin()->
isParameter('module', 'job')->
isParameter('action', 'create')->
end()->
;
|
新規記事作成ページを取得し、[job]フォームの各フィールドに値を記入し、「Preview your job」のリンクをクリックするとjobアクションのcreateメソッドが動きますよ、の意味となります。
実行してみましょう。
>php test/functional/frontend/jobActionsTest.php
Parse error: syntax error, unexpected ';', expecting T_STRING or T_VARIABLE or '{' or '$' in \symfony\test\functional\frontend\jobActionsTest.php on line 91
お。
なんか最後がend()->;ってなってるせいです。
end();にすると実行に成功します。
>php test/functional/frontend/jobActionsTest.php
> 3 - Post a Job page
> 3.1 - Submit a Job
# get /job/new
ok 16 - request parameter module is job
ok 17 - request parameter action is new
# post /job
ok 18 - request parameter module is job
ok 19 - request parameter action is create
ちなみに投稿したデータは挿入に成功すれば実際に保存されます。
ただし、バリデータやフィールドをチェックしておらず、'logo'=>'a'とか'hoge'=>'fuga'とかありえないデータを突っ込んでもテストに通ってしまいます。
あとテストを実行するたびにjobeet_testのデータが総刷新されるんだがなんだこれ。
PR
トラックバック
トラックバックURL: