我的PhpUnit有问题。 我想使用PHPUnit的isIdentical方法来确保使用特定对象作为参数来调用方法。 给出的是带有方法“ setBar”的模拟对象:

    $bar = new Bar();
    $someMock
        ->expects($this->any())
        ->method('setBar')
        ->with($this->identicalTo($bar));

    $someMock->setBar($bar);

当然,这仅仅是一个例子。 它应该可以,但是不能。 为了获得一些提示,我在PHPUnit_Framework_Constraint_IsIdentical方法中编写了一些回显代码:

public function evaluate($other, $description = '', $returnResult = FALSE)
{
    //...
    echo "\n";
    echo spl_object_hash($other) . "/". spl_object_hash($this->value). " - ". get_class($this->value) ."/". get_class($other);
    echo " ->> ";  
    var_dump($other === $this->value);
}

的目的散列$other不一样的 $this->value (而散列$this->value实际上是正确的)

同时,我在这里找到了此错误的原因。 这是PHPUnit的问题。 PHPUnit克隆对象。 我留下问题,如果有人知道此问题的解决方法。

https://github.com/sebastianbergmann/phpunit-mock-objects/issues/41

  ask by player-one translate from so

本文未有回复,本站智能推荐:

1回复

PHPUnit测试总是成功,有$ this-> once()和$ this-> never()?

我知道我做错了,因为这很奇怪,我几天就学习PHPUnit了。 测试主题是receive()控制器操作: class ReportController { /** * @var \Symfony\Component\EventDispatcher\EventDispatche
7回复

PHPUnit“模拟方法不存在。” 当使用 $mock->expects($this->at(...))

我在 PHPUnit 模拟对象方面遇到了一个奇怪的问题。 我有一个应该被调用两次的方法,所以我使用了“at”匹配器。 这在第一次调用该方法时有效,但由于某种原因,第二次调用它时,我得到“模拟方法不存在。”。 我以前使用过“at”匹配器,但从未遇到过这种情况。 我的代码看起来像: 当我运行测试时
1回复

PHPUnit在另一个类中使用的mock方法

PHPUnit在另一个类中使用的mock方法? 例: 在测试中我想测试我的Main类,并模拟doExpressCheckout()方法,我的工作代码不用于测试:
2回复

如何使用PHPUnit,Mock,Stub测试不属于我的测试类的测试方法

我有这个课 这是我的测试: 在早期的类中, callExit方法属于Password类。 我的问题是,我可以测试不是Password类的方法吗? 例如在checkPassword方法中: 我想为fillOut方法做一个模拟,我该怎么办? 帮帮我!
2回复

检查是否在没有传递任何参数的情况下调用mock的方法(在phpunit中)

在phpunit中我们可以指定特别调用的方法 或任何 参数。 但是有没有办法指定该方法在没有参数的情况下被调用? 这是我期望失败的测试: UPD : 这个问题具有理论性质,所以我没有任何现实生活的例子。 在某些情况下,我现在可以想到的是: 我们
3回复

在尝试模拟PHPUnit中的依赖项时,“无法重新声明类”错误

我正在现有代码库上使用PHPUnit实现单元测试。 我对单元测试很新,但我知道目标是完全隔离正在测试的代码。 这对我的代码库来说很难实现,因为许多类依赖于代码库中的其他类。 依赖项被硬编码到类中,因此无法使用依赖项注入。 我也不想仅仅为了测试它而重构现有代码。 因此,为了将每个类与
1回复

PHPUnit数据提供程序参数计数错误

我刚开始使用PHPUnit 。 到目前为止,除Data Provider问题外,一切都很完美。 问题是当我运行测试时,它会通过。 但是,如果我再次运行它,它将失败并出现以下错误: 如果我对数据提供程序函数进行了任何更改(即更改要返回的数据,提供程序函数名称等)并重新运行,则它会
3回复

如何使用PHPUnit测试mail()

如果正确发送邮件,有没有办法用PHPUnit(或者可能是PHP的其他测试框架)进行测试? 我必须测试使用PHP函数mail()的代码。 使用自定义邮件程序类我可以随时进行模拟,但对于mail()...? 也许有一些插件能够使用IMAP并验证是否收到邮件? (如果有可能,它应该与操作系统无