| コメント(0) | トラックバック(0)
KoshigoeBLOG: ひとまず PHPSpec
ただ、やっぱり、スペック名(でいいんでしょうか?)が日本語で書けないのが...。

PHPSpecではスペック名(メソッド名)、クラス名ともに問題なく日本語を使うことができます。下記のコードをみてください。

KUBO Atsuhiro
tests/Stagehand/TestRunner/PHPSpec/DescriptionOfBehaviourAndExpectationSpec.php
<?php
...
class Describe振舞やエクスペクテーションの説明 extends PHPSpec_Context
{
...
    public function itは日本語を使用できること()
    {
        $this->spec($this->getSpecMethods())
             ->should
             ->be(array('itは日本語を使用できること'));
    }
...
class 日本語Spec extends PHPSpec_Context
{
...

このスペックをStagehand_TestRunnerのspecrunnerコマンドを使って実行すると下記のような出力が得られます。

sh-testrunner-specrunner-output.png

PHPSpecでは、エクスペクテーション失敗時に失敗したエクスペクテーションの行番号が出力されないため、複数のエクスペクテーションを持つサンプルで失敗したエクスペクテーションを特定することが困難です。さらに、筆者が入れてしまった「shouldNotを使った場合にエクスペクテーションが成功するとそれ以降のサンプルコードが実行されない不具合」も修正されていません。(ページ末尾のパッチを参照ください)

残念ながらPHPSpecの開発は今年の2月以降止まっているため、PHPSpecの採用を検討する際は、このまま開発が再開されない可能性も考えておく必要があるでしょう。筆者の場合、現在は迷わずPHPUnitを採用します。

「shouldNotを使った場合にエクスペクテーションが成功するとそれ以降のサンプルコードが実行されない不具合」のパッチ
Index: src/PHPSpec/Specification.php
===================================================================
--- src/PHPSpec/Specification.php	(リビジョン 209)
+++ src/PHPSpec/Specification.php	(作業コピー)
@@ -371,7 +371,7 @@
         }
         $result = call_user_func_array(array($this->_matcher, 'matches'), $matchArgs);
         $this->setMatcherResult($result);
-        if (!$result) {
+        if ($this->_expectation->getExpectedMatcherResult() !== $result) {
             throw new PHPSpec_Runner_FailedMatcherException();
         }
     }
トラックバック(0)
  • このブログ記事のトラックバックURL:
コメント