3

在stackoverflow上搜索了这个并没有找到答案

来自 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

什么都不返回

4

8 回答 8

6

PHPSpec 的开发自 2010 年 8 月开始,经过 2 年的中断。代码库现在看起来更稳定了。我会再试一次。

该网站现在位于 www.phpspec.net

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

如果您需要任何进一步的帮助,您还可以通过他们的邮件列表联系开发人员: http ://groups.google.com/group/phpspec-dev

于 2011-07-27T22:59:04.480 回答
0

我已经成功使用了 PHPSpec,但它现在还没有积极开发,是吗?这很棒,但不要认为我会选择一个停滞不前的项目。无论如何,我使用以下设置从网络浏览器运行测试,也许你会找到一些东西来帮助你为 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 测试……但这可能对某人有所帮助。

于 2009-10-25T08:54:26.220 回答
0

我也无法让它运行,但您也可以将 BDD 与 PHPUnit 一起使用。检查文档

于 2008-11-27T15:08:17.677 回答
0

Was really looking forward to using PHPSpec, oh I guess will check into PHPUnit

于 2008-11-27T19:14:36.710 回答
0

您可以在 PHPUnit 中编写 RSpec-ish 类型的测试,但它受到一些事情的阻碍。

  • PHPUnit 模拟不允许您重新声明它们,因此很难在 before 方法中设置一堆存根然后根据需要覆盖它们。您可以通过安排在预期之后设置存根来解决此问题,但这很奇怪。

  • PHP 不像 Ruby 那样动态,所以你不能轻易地模拟或存根类方法,除非你专门为此设计类,即使那样它也很丑陋。(这可能会随着 PHP 5.3 的后期静态绑定特性而改变)。

于 2009-05-31T18:03:34.727 回答
0

您好,它确实很老 Q.,但我认为http://behat.org/应该在这里。每个人都有这个问题应该检查一下。

于 2011-04-12T10:02:03.053 回答
0

我尝试使用 phpspec,但发现它太错误/不成熟。我强烈推荐SimpleTest来编写单元测试。

于 2008-11-27T22:22:18.173 回答
0

请注意,PHPSpec 已停产:

http://blog.atrumfutura.com/2010/05/the-mockery-php-mock-objects-made-simple/#comment-88628508

于 2011-04-12T10:08:34.593 回答