CI2 sparks と CIUnit でつまずいた、が解決した

sparks をガシガシ使っていこうかと+テスト駆動開発の取り組みということで、いろいろ弄くっていたわけで、CIUnit for 2.x でテストがパスするまで のような記事を書いた訳ですが、後にこちらの kenjis / my-ciunit CI2対応CIUnit を使用したが、記事執筆時点で sparks に未対応だった。

そこで自分でいろいろこねくり回して対応したれウェヒヒ、とかやってたら足らん頭じゃ全然ラチが開かず、結果 @kenji_s さんが sparks に対応してアップデートしていました。

が、いろいろつまづくことがあったので情報共有。どれほどの人に有益かは微妙。

必要なもの

CI2 本体に my_ciunit を取り入れて、spark で example-spark をインストールして、example-spark の出力するメッセージのテストを行ってみます。

CodeIgniter 入手と注意(つまづきポイント)

ここで注意なのが、Codeigniter の default ブランチを使うことです(とりあえず今のタイミングで clone するなら問題ないです)

私は 公式のアーカイブ版 2.0.2 を使っていたのですが、うまく動かず、ソースを確認すると、動作しないような記述になっていたのでいろいろと相談してみたところ、

“2.0.2だとfunction_exist()でチェックしてないんですね。 最新のhg-tipではチェックしてるんです”

とのこと。確かに function_exist() がないからおっかしーなーとは思ってたけどそうゆうことか。

また、Codeigniter Reactor のリポジトリから clone するのであって、公式からのリンク先の Codeigniter リポジトリではないことにも注意。

Reactor の方はいわゆる edge なのかな?開発途上(最新)みたいな。Codeigniter リポジトリのトップにも最新版への誘導がありますね。

sparks 導入

sparks をインストールします。めどいのでコマンドでさくっと行きましょう。

php -r "$(curl -fsSL http://getsparks.org/go-sparks"

CI2 本体に my_ciunit を導入。ディレクトリ構造を参考に配置してください。

次に、MY_Loader.php にちょっとだけ変更を加えます。kenjis / my-ciunit :: Known Issues

- define('SPARKPATH', 'sparks/');
+ define('SPARKPATH', BASEPATH . '../sparks/');

んで、spark のテスト用に example-spark をインストールします。

php tools/spark install example-spark

準備はこれで完了。

テスト作成とコントローラー修正

welcome/index にアクセスすると example-spark->printHello() が走り、その出力があるかどうかのテストを行います。

まずはテストから。サンプルをちょこっといじって済ませます。

$this->assertSame(0, preg_match('/(error|notice)/i', $out));
+ $this->assertSame(1, preg_match('/(Hello from the example spark!)/i', $out));

printHello() は “Hello from the example spark!” という文字列を出力するメソッドなので、それが出力されることを期待されるものとします。

上記テスト結果の期待に沿って実装します。

controllers/welcome.php で example-spark をロードします。もしくは autoload でもいいです。

// controllers/welcome.php index()
+ $this->load->spark('example-spark/1.0.0');

views/welcome_message.php で example-spark の printHello() を呼びます。適当なところでよいです。

<?php $this->example_spark->printHello() ?>

実装完了。

テストを走らせる

tests/ で phpunit を実行してパスすれば完了です。

CIUnit を sparks 対応やアドバイスをいただいた @kenji_s さんにこの場を借りてお礼を申し上げます。

コレを期にユーザー会にも登録し、何か役に立てることがあるといいなぁと生意気ぬかしとります。

追記

2.0.3 がリリースされたので、そちらを使えば問題は置きません。

いろいろなバグもなおっているようですし、最新版が推奨です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする