我继承了一些phpspec测试。
该测试正在测试名为“ getFatalErrors”的方法的值,并通过以下方式报告失败:
expected [array:1], but got [array:1].
我想查看数组的实际内容。
我试图通过添加如下代码行来破解phpspec测试类:
<?php
namespace spec;
use MyClass;
use PhpSpec\ObjectBehavior;
use Prophecy\Argument;
class MyClassSpec extends ObjectBehavior
{
public function it_returns_a_path_problem($args,\XMLFileWrapperTest $testWrapper)
{
echo "foo";
...
var_dump(print_r($this->getFatalErrors()->getWrappedObject(), true));
...
fwrite(STDOUT, "foo");
print_r($this->getFatalErrors()->getWrappedObject(), true)
$this->display("foo");
}
}
-
但是我永远无法在CLI输出中显示任何输出。
如何使一些任意文本出现在测试输出中,以便当我对PHPSpec更加熟悉时能“看到”正在发生的事情?
答案 0 :(得分:0)
您是否尝试过跟踪错误日志并在函数中添加类似内容
error_log( print_r( $this->getFatalErrors()->getWrappedObject(), 1 ) );
或error_log( print_r( $this->getFatalErrors(), 1 ) );
?
通常,它可以正常工作,因为输出已写入服务器错误日志中,并且您可以使用终端或控制台在该文件上尾部并实时查看结果。
答案 1 :(得分:0)
只需使用-v
标志运行phpspec,它将更加冗长。
答案 2 :(得分:0)
根据phpspec documentation on Matchers > Inline Matcher,有可能...
打印更详细的错误消息
为此,您可以抛出
FailureException
因此,这意味着可以从您的PHPSpec示例方法中抛出FailureException
来输出自定义消息。
我尝试了这个,它让我在测试输出中写了“ foo message”这个短语:
<?php
namespace spec;
use PhpSpec\ObjectBehavior;
[...]
use PhpSpec\Exception\Example\FailureException;
class MyClassSpec extends ObjectBehavior
{
public function it_tests_something()
{
[...]
throw new FailureException("foo message");
}
}
答案 3 :(得分:0)
在phpspec.yml中使用该行选择了格式化程序pretty
formatter.name: pretty
或在执行带有格式标志的测试运行器时
vendor/bin/phpspec run --format=pretty
然后echo
输出在终端中可见。