最後更新:2016-06-02
來源:互聯網
上載者:User
關鍵字
phpunit
單元測試
php
laravel5
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'; 然後測試成功