【问题标题】:PhpUnit @depends annotation and MockObjectPhpUnit @depends 注解和 MockObject
【发布时间】:2014-02-24 06:01:04
【问题描述】:

这是一个代码示例:

class TestTest extends \PHPUnit_Framework_TestCase
{
    public function testFirst() {
        $factory_mock =
            $this->getMockBuilder('Factory')
                ->disableOriginalConstructor()
                ->disableOriginalClone()
                ->getMock();

        $factory_mock
            ->expects($this->any())
            ->method('getData')
            ->will($this->returnValue('123'));

        var_dump($factory_mock->getData());
        var_dump($factory_mock->getData());

    return $factory_mock;
}

    /**
     * @depends testFirst
     */
    public function testSecond(Factory $factory) {
        var_dump($factory->getData());
    }

}

这是我们得到的结果:

    .string(3) "123"
    string(3) "123"
    .NULL

我希望第三个“getData”方法调用给我与前两个相同的结果,但它不会发生。我不明白为什么。请分享您对 PhpUnit 内部工作原理的了解。

PHPUnit v3.7.29、PHP v5.4.23

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

    如果您在两个测试中都对模拟工厂进行var_dump,您将看到第一个具有PHPUnit_Framework_MockObject_InvocationMocker,而在第二个测试中该属性为空。测试完成运行后,将重置模拟方法。所以你最终会得到一个没有设置方法的模拟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-10
      • 2023-01-19
      • 2018-06-03
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 2011-10-10
      • 2012-01-28
      相关资源
      最近更新 更多