Phpspec与stdClass对象匹配失败



使用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)[]);
}

相关内容

  • 没有找到相关文章

最新更新