У меня есть этот тест:
<?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.
В документации написано:
Вы можете использовать методpartalmock, когда вам нужно только смоделировать несколько методов объекта. Методы, которые не являются имитированными, будут нормально выполняться при вызове:
$ this- >partMock (Service :: class, function ($ mock) {$ mock-> shouldReceive ('process') -> Once ( .) 1016 *
И когда я пытаюсь использовать макет c (не частичный), у меня появляется эта ошибка: Получено Mockery_1_App_Services_MemberService :: createMember (), но ожидания не были указаны , конечно, потому что есть 2 функции в этом классе и так phpunit не знает, что делать с функцией 'createMember'.
Так что вы мне предлагаете? (newb ie в тестах phpunit).
Merci Dom
РЕДАКТИРОВАТЬ: laravel 6.0 phpunit 7.5