symfonyチュートリアル実践【第14~16日目】
タグの続き。
“Add tags to a question”でタグを追加するフォームを作るのですが、なんと”Autocomplete”。以前自前で実装した身としてはライブラリでできちゃうとあっさり過ぎて複雑な気持ちです。
“Autocomplete”の項目の最後でyou can try itとありますが、ログインしてからブラウザで/question/***にアクセスするとエラーが出ました。
The route "tag_add" does not exist.
“Remote form”のrouting.ymlへの追記を済ませると、動く。Autocompleteに関しては、矢印キーは効かないので使い勝手は微妙。
“Display the tag bubble”ではタグクラウドを生成。特に問題なし。
続いて”Unit tests”。
PHPUnitではなくSimpleTestを使うようです。SimpleTestのページにPEAR installableなtgzがなかったのですが(tar.gzはあったが”Package “simpletest_1.0.tar.gz” is not valid”となりダメ)Googleで発見した下記のURLから直接ダウンロードできました。
$ wget http://jaist.dl.sourceforge.net/sourceforge/simpletest/simpletest_1.0.0.tgz $ pear install simpletest_1.0.0.tgz
SimpleTestの11月時点での最新版である1.0.1alpha3は様々な改善が施されているようですがチュートリアルに従って安定版を使うことにします。
とここまで書いてチュートリアルのNoteに、PHP5.0.5で下位互換性のない変更があってそれ以降のバージョンでsimpletest動かないんだよねー、と書いてあることに気付く。。SimpleTestのページには特に動作環境は書いていないのだが。
$ pear uninstall simpletest-1.0.0 $ wget http://ufpr.dl.sourceforge.net/sourceforge/simpletest/simpletest_1.0.1alpha3.tar.gz $ tar zxvf simpletest_1.0.1alpha3.tar.gz $ mv simpletest /PHPのinclude_pathに移動
“Default unit tests”で、test/frontend/にすでに生成されたファイルが羅列してあるが、自分のとちょっと違う。ただ、ここでは使わないらしく消してしまう。
$ rm test/frontend/*
test/frontend/TagTest.phpを書く。ここで例えば適当に$testsの中で’foo’のところを’fooo’と書くと
Test suite in (test/frontend)
1) Equal expectation fails at character 3 with [fooo] and [foo] at [/home/funaki/work/sfprojects/askeet/test/frontend/TagTest.php line 19]
in test_normalize
in TagTest
in /home/funaki/work/sfprojects/askeet/test/frontend/TagTest.php
FAILURES!!!
Test cases run: 1/1, Passes: 4, Failures: 1, Exceptions: 0
こんな感じでテストに失敗する。
ファイル名は*Test.phpとしないとsymfony test frontendのときに実行されない。また、ファイルが別でもクラス名に同じものを使うとCannot redeclare classのFatal Errorが出る。
また、php.iniデフォルトの8Mのメモリ制限をオーバーすることがあったので8Mから-1に変更した。
Fatal error: Allowed memory size of 8388608 bytes exhausted
続いて”Selenium”。Selenium archiveへのリンクが500エラーを起こすがトップページからSelenium Core 0.8.0をダウンロード、web/seleniumに解凍する。
Seleniumが動作するところを眺めるのは初めてだったのですが、Test Suiteが流れるように動作していく様は圧巻。テストしてる、って感じがする。
チュートリアルとはバージョンが違うのか、インターフェイスが違いました。またFirefox2.0はまだ動作環境外のようです。
さて、さらに進んで16日目。
Lazy dayと題されたチュートリアルにはつらつらと文字が並ぶだけ。開発するにもちゃんと休まないとね!と書いてある。と言いつつ本当はsymfonyの哲学のようなものを語りたかったらしい。そんな感じで16日まで終了。