使用laravel 5应用程序时遇到phpspec问题。为什么我下面的Phpspec单元测试失败,或者更准确地说,我如何才能让stdClass对象键匹配,这样它就不会失败?
我的规范文件:
function it_checks_add_starting_date_to_flow()
{
$dealflows = new stdClass ();
this->add_starting_date_to_flow($dealflows)->shouldReturn((object)[]);
}
我正在测试的助手功能:
public static function add_starting_date_to_flow($dealflows)
{
$dealflows= new stdClass();
return $dealflows;
}
从phpspec我得到以下响应:
应用程序/库/Mmdallhelpers
65-它检查是否将开始日期添加到流应为[obj:stdClass],但得到了[obj:stdClass]。
@@ -1,1 +1,1 @@
-stdClass Object &000000001d025295000000007dd68060 ()
+stdClass Object &000000001d02529a000000007dd68060 ()
80 // ]
81 // ));
82 $this->add_starting_date_to_flow($dealflows)->shouldReturn((object)[]);
83
84 }
85
0 vendor/phpspec/phpspec/src/PhpSpec/Matcher/IdentityMatcher.php:78
throw new PhpSpecExceptionExampleNotEqualException("Expected [obj:stdC...")
1 [internal]
specApplibrariesMmdealhelpersSpec->it_checks_add_starting_date_to_flow()
shouldReturn()调用使用严格比较的身份匹配器。您的规范失败了,因为您期望的对象与从方法返回的对象不是同一个实例。
请改用比较匹配器。它使用弱比较,可以用shouldBeLike()调用:
function it_checks_add_starting_date_to_flow()
{
$dealflows = new stdClass();
$this->add_starting_date_to_flow($dealflows)->shouldBeLike((object)[]);
}