2008-11-27 48 views
3

搜索到這個stackoverflow,找不到答案PHPSpec - 無法運行,任何人使用它的PHP開發?

來自Ruby On Rails和Rspec,我需要一個像rspec(更簡單的過渡)的工具。安裝了它通過PEAR並試圖運行它,但它不工作(還)

只想問身邊如果任何人使用它有同樣的問題,因爲它不是在所有

運行試圖從一個實例運行它手動 - http://dev.phpspec.org/manual/en/before.writing.code.specify.its.required.behaviour.html

phpspec NewFileSystemLoggerSpec 

返回任何

即使在運行

phpspec some_dummy_value 

什麼也沒有返回

回答

0

真的很期待使用PHPSpec,哦,我猜會查PHPUnit的

0

我嘗試使用phpspec但發現它漏洞太多/不成熟。我強烈建議SimpleTest寫作unittests。

+0

啊,我喜歡SimpleTest的太多 - 但我認爲這是一個很好的「啓動器」的測試套件,其中PHPUnit的是進化(由IDE等支持)。 – 2008-11-27 22:26:39

+0

SimpleTest的最新版本是2008/04/08 – andho 2009-10-25 08:47:39

0

您可以在PHPUnit中編寫RSpec-ish類型的測試,但它受到了一些阻礙。

  • PHPUnit的嘲弄不要讓你 重新聲明它們,所以很難設定 了在一堆存根之前 方法,然後覆蓋並根據需要 。你可以通過 解決這個問題,在預期之後安排存根被設置爲 ,但這很奇怪。

  • PHP並不像Ruby的動態,所以你 不能輕易模仿或存根淘汰類 方法,除非你專門 設計類本,甚至 那麼它很醜陋。 (這可能是 隨PHP 5.3的後期靜態 綁定功能而改變)。

0

我已經成功地使用了PHPSpec,但現在不積極開發它嗎?這太好了,但不認爲我會選擇一個停滯不前的項目。無論如何,我使用以下設置從webbrowser運行測試,也許你會發現一些可以幫助你爲CLI設置它的東西。

PHPSpecConfiguration.php

$projectDir = realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..') . DIRECTORY_SEPARATOR; 

$simdal_root = $projectDir . 'library'; 
$phpspec_root = $projectDir . '..' . DIRECTORY_SEPARATOR . 'PHPSpec'; 
$mockery_root = $projectDir . '..' . DIRECTORY_SEPARATOR . 'Mockery'; 

$paths = array(
    'SimDAL'=>$simdal_root, 
    'PHPSpec'=>$phpspec_root, 
    'Mockery'=>$mockery_root 
); 

set_include_path(implode(PATH_SEPARATOR, $paths) . PATH_SEPARATOR . get_include_path()); 

require_once 'PHPSpec.php'; 
require_once 'Mockery/Framework.php'; 

class Custom_Autoload 
{ 
    public static function autoload($class) 
    { 
     //$path = dirname(dirname(__FILE__)); 
     //include $path . '/' . str_replace('_', '/', $class) . '.php'; 
     if (preg_match('/^([^ _]*)?(_[^ _]*)*$/', $class, $matches)) { 
      include str_replace('_', '/', $class) . '.php'; 
      return true; 
     } 

     return false; 
    } 

} 

spl_autoload_register(array('Custom_Autoload', 'autoload')); 

,然後運行它所有的文件:AllSpecs.php;

require_once 'PHPSpecTestConfiguration.php'; 

$options = new stdClass(); 
$options->recursive = true; 
$options->specdocs = true; 
$options->reporter = 'html'; 

PHPSpec_Runner::run($options); 

我不喜歡CLI測試...但這可能會幫助某人。

0

你好,它的漂亮的老問答,但我認爲http://behat.org/應該在這裏。每個人都有這個問題應該檢查出來。

6

發展上PHPSpec自2010年8月重新啓動,一個2年休息。代碼庫現在看起來更穩定。我會再試一次。

該網站現在位於www.phpspec.net

您可以在http://www.phpspec.net/documentation找到的文檔。它基本上是第一個版本的更新。

若您需要任何進一步的幫助,你也可以通過他們的郵件列表到達開發商: http://groups.google.com/group/phpspec-dev