2008-11-27 74 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