【发布时间】:2020-05-13 16:20:15
【问题描述】:
我有这个测试:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Services\AccessTokenService;
use App\Services\MemberService;
class BranchTest extends TestCase
public function testPostBranchWithoutErrors()
{
$this->mock(AccessTokenService::class, function ($mock) {
$mock->shouldReceive('introspectToken')->andReturn('introspection OK');
});
$this->mock(MemberService::class, function ($mock) {
$mock->shouldReceive('getMemberRolesFromLdap')->andReturn(self::MOCKED_ROLES);
});
如您所见,此测试有 2 个模拟。第二个'MemberService:class'是我目前的问题。在这个类中有 2 个函数:'createMember' 和 'getMemberRolesFromLdap'。我确切地说我只想模拟“getMemberRolesFromLdap”函数。
在文档中是这样写的:
当您只需要模拟一个对象的几个方法时,您可以使用 partialMock 方法。未被mock的方法在调用时会正常执行:
$this->partialMock(Service::class, function ($mock) { $mock->shouldReceive('process')->once(); });
但是当我使用“partialMock”时,我有这个错误:
错误:调用未定义的方法 Tests\Feature\BranchTest::partialMock()
当我尝试经典模拟(非部分)时,出现此错误:
收到 Mockery_1_App_Services_MemberService::createMember(),但未指定预期
当然是因为这个类中有 2 个函数,所以 PhpUnit 不知道如何处理函数“createMember”。
接下来我可以尝试什么?我是 PhpUnit 测试的初学者。
编辑
Laravel 6.0
PHPUnit 7.5
【问题讨论】:
-
你的测试类扩展了哪个测试用例?
-
您好,先生。类 BranchTest 扩展了 TestCase
-
和use语句有一个phpunit一个和一个laravel一个
-
-
我已经用你想要的信息编辑了这个问题。谢谢先生