php 单元测试 phpunit ,如何mock类调用自身的方法?
程序员文章站
2024-01-05 14:27:28
...
phpunit单元测试phplaravel5
使用laravel5做单元测试时,碰到以下问题,需要测试querySessionIdTest这个方法,
但是需要mock出sessionidtest这个方法,具体代码如下:
类如下:
class ZabbixSystem implements ApmSystemInterface public function querySessionIdTest() { echo 'querySessionIdTest'; return $this->sessionidtest(); } public function sessionidtest() { echo 'sessionidtest'; return 'aaa'; }}
单元测试方法:
public function testQuerySessionIdSuccess() { $return = 'aaa'; $stub = Mockery::mock('mcokname');// $this->app->instance('ZabbixSystem', $stub); $stub->shouldReceive('querySessionIdTest')->andReturn($return); $response = $stub->querySessionIdTest(); $this->assertEquals('aaa', $response); } public function testQuerySession() { // 为 SomeClass 类创建桩件。 $stub = $this->getMockBuilder('App\Services\ZabbixSystem')->setMethods(array( 'querySessionIdTest', 'sessionidtest' ))->getMock(); // 配置桩件。 $stub->method('sessionidtest')->willReturn('111'); $this->app->instance('ZabbixSystem', $stub); $this->assertEquals('foo', $stub->querySessionIdTest()); }
通过两种方式进行测试,但都不成功,我希望的结果为:
echo 'querySessionIdTest';
然后测试成功