shouldReceive('findAll') ->once() ->withArgs(function (Pagination $actualPagination, DirectoryEmployeeSorter $actualSorter, mixed $actualFilter) use ($pagination): bool { return $actualPagination === $pagination && $actualSorter->sortBy === DirectoryEmployeeSortColumn::arcadiaId && $actualSorter->direction === \SortDirection::Ascending && $actualFilter === null; }) ->andReturn($paginatedResult); // WHEN $result = $usecase->execute($input); // THEN expect($result)->toBeInstanceOf(Output::class) ->and($result->total)->toBe(1) ->and($result->page)->toBe(1) ->and($result->perPage)->toBe(10) ->and($result->employees)->toHaveCount(1) ->and($result->employees[0]->firstName)->toBe('John'); }); });