2013-12-09 37 views
0

在我所要测试的功能,我有以下检查PHP单元测试如何才能不嘲笑的方法可以被调用

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对象包含不可调用的方法或可能是属性?我不确定。

+0

你使用的是一些框架吗? – Aliceiw

+0

@ Sakuya84 yeap,Mockery –

回答

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'))); 
} 
+0

这是我最后做的。但问题是,stdClass不可用(使用实体),所以我不得不为我的需要创建一个测试实体。你的回答足够接近。我会在时间内接受它。还请检查您是否喜欢这里的讨论:https://github.com/padraic/mockery/issues/231#issuecomment-30135464 –