Phpunit 在测试类中仅模拟一种方法 - 使用 Mockery
Posted
技术标签:
【中文标题】Phpunit 在测试类中仅模拟一种方法 - 使用 Mockery【英文标题】:Phpunit mock only one method in tested class - using Mockery 【发布时间】:2018-05-26 01:39:53 【问题描述】:我从一周开始就在学习 phpunit。我不知道如何只模拟测试类中的一种方法。 (这只是一个例子,所以我没有写命名空间)。也许你可以帮助我
class SomeService
public function firstMethod()
return 'smth';
public function secondMethd()
return $this->firstMethod() . ' plus some text example';
和测试:
class SomeServiceUnitTest extends TestCase
private $someService;
public function setUp()
parent::setUp();
$this->someService = new SomeService();
public function tearDown()
$this->someService = null;
parent::tearDown();
public function test_secondMethod()
$mock = Mockery::mock('App\Services\SomeService');
$mock->shouldReceive('firstMethod')->andReturn('rerg');
exit($this->walletService->secondMethd());
【问题讨论】:
【参考方案1】:你可以使用partial mocks,作为你的测试类的例子,你可以这样做:
public function test_secondMethod()
$mock = Mockery::mock('App\Services\SomeService')->makePartial();
$mock->shouldReceive('firstMethod')->andReturn('rerg');
$this->assertEquals('rerg plus some text example', $mock->secondMethd());
希望有帮助
【讨论】:
以上是关于Phpunit 在测试类中仅模拟一种方法 - 使用 Mockery的主要内容,如果未能解决你的问题,请参考以下文章