log > refacted-p-bbsのテストをCodeceptionで書き進めた

refacted-p-bbsのテストをCodeceptionで書き進めた

Codeceptionを覚えたが受け入れテストを(ほぼ)書かないままだった。とりあえず気づいているところだけでも書き進めようと思い、書いていた。

以下を参考にして書いた。

今回は、tests/acceptance/_bootstrap.phpにクラスを読み込む処理を書き、管理者削除やユーザ削除などのテストを追加した。setUp/tearDownに相当する_before, _afterメソッドがCestクラスにある。これは便利なのだが、テストごとに必ず実行されてしまうので困ることもある。

そういうときは、「Before/After Annotations」を使う。(上記リンク中段に書いてある。)protectedメソッドを追加した後、コメントで@before/@afterを指定すればテストごとに実行するメソッドを指定できる。これが結構便利だった。

たとえば、「管理者権限で書き込みを削除する」というテストを実行するには、「すでに書き込みがある」「ログインしている」という状況が必要になる。これだけなら、_befor, _afterを使えばいい。しかし、後々「書き込みがない状況で書き込もうとする」という場合は書き込む部分を_beforeに書けない。そういうときに、個別に状況を設定できるAnnotationsが役に立つ。

なお、Codeceptionだけじゃなくて、PHPUnitにもアノテーションはある


あと、bbs.logにテストデータが書かれていたので修正して空ファイルにした。その後、git update-index --assume-unchanged bbs.logで変更があっても関知しないように設定した。前に設定した気がしてたけど、気のせいだったようだ。