【问题标题】:Determining whether or not an object is a PHPUnit mock确定一个对象是否是 PHPUnit mock
【发布时间】:2016-12-27 19:20:40
【问题描述】:

我想断言传递给 PHPUnit 测试方法的值/对象是由 getMockBuilder 初始化的模拟。例如:

class Example_Test extends PHPUnit_Framework_TestCase
{
    ...

    public function testMethod(Some_Class $object_mock)
    {

        // since methods like "expects" will be used below,
        // this needs to be a mock
        assert('$this->isMock($object_mock)');

        ...

        $object_mock->expects($this->atLeastOnce())
                    ->method('reallyCoolThingThatMustHappen')
                    ->with(
                        $this->equalTo('absolutely_necessary_argument')
                    );

        ...

    }
}

有谁知道可以用来断言$object_mock 是 PHPUnit 模拟的方法吗? (我知道 isMock 不存在,但我把它放在那里作为我正在尝试做的一个例子)。

【问题讨论】:

  • 当调用isMock() 方法时,您的模拟可以设置为返回true:$object_mock->method('isMock') ->willReturn(true);
  • @MarkBaker 好主意。但如果它不是模拟,我也需要它返回 false。

标签: php unit-testing phpunit


【解决方案1】:

$o 是使用getMock()(不推荐)、getMockWithoutInvokingTheOriginalConstructor()(不推荐)、createMock()(最佳实践)、createConfiguredMock() 创建的测试替身时,$o instanceof PHPUnit_Framework_MockObject_MockObject 的计算结果为truecreatePartialMock()getMockBuilder()等方法。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2011-12-12
    • 2016-04-24
    相关资源
    最近更新 更多