2016-08-20 79 views
2

我想断言一个传入PHPUnit测试方法的值/对象是由getMockBuilder初始化的模拟。例如: -确定一个对象是否是一个PHPUnit模拟

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不存在,但我把它放在那里作为我想要做的一个例子)。

+2

当你调用'isMock()'方法时,你的模拟可以设置为true:'$ object_mock-> method('isMock') - > willReturn(true);' –

+0

@MarkBaker好主意。但如果它不是模拟的,我还需要它返回false。 – Ataraxia

回答

3

$o instanceof PHPUnit_Framework_MockObject_MockObject评估为true$o是已使用getMock()(不建议使用),getMockWithoutInvokingTheOriginalConstructor()(不建议使用),createMock()(最佳实践),createConfiguredMock()createPartialMock()getMockBuilder()等方法创建了一个测试两倍。

相关问题