【问题标题】:PHP unit-testing how to mock a method NOT to be callablePHP单元测试如何模拟不可调用的方法
【发布时间】:2013-12-26 10:41:12
【问题描述】:

在我要测试的函数中,我有以下检查

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 对象包含一个不可调用的方法或者可能是一个属性?我不知道。

【问题讨论】:

  • 你在使用一些框架吗?
  • @Sakuya84 是的,嘲讽

标签: php unit-testing mocking mockery


【解决方案1】:

您可以简单地实例化一个空的 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')));
}

【讨论】:

  • 这有点像我最后所做的。但问题是 stdClass 不可用(使用实体),所以我必须为我的需要创建一个测试实体。你的答案足够接近。我会在规定时间内接受。还要检查你是否喜欢这里的讨论:github.com/padraic/mockery/issues/231#issuecomment-30135464
猜你喜欢
  • 1970-01-01
  • 2014-04-16
  • 2015-10-21
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 1970-01-01
  • 2013-10-10
相关资源
最近更新 更多