PHP单元测试如何模拟一个不可调用的方法

时间:2013-12-09 10:47:42

标签: php unit-testing mocking mockery

在我想测试的功能中,我有以下检查

if (!is_callable(array($object, $methodName))) {
    throw new \InvalidArgumentException(
        sprintf(
            'Unable to call method %s::%s() on object $%s',
             get_class($object),
             $methodName,
             $objectName
        )
    );
}

如何测试异常?

如何创建包含不可调用或可能是属性的方法的MOCKERY对象?我不确定。

1 个答案:

答案 0 :(得分:2)

您可以简单地实例化一个空的StdClass对象。

public function testCallable()
{
    $object = new \StdClass();

    $object2 = \Mockery::mock('\StdClass')
        ->shouldReceive('myMethod')
        ->andReturn('foo')
        ->getMock();

    $this->assertFalse(is_callable(array($object, 'myMethod')));

    $this->assertTrue(is_callable(array($object2, 'myMethod')));
}