Skip to content

Commit 574e6eb

Browse files
author
Paweł Kąkol
committed
Allow default values to be automatically used if specified in targets
1 parent 948aad8 commit 574e6eb

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

src/ServiceMockHelperTrait.php

+21-18
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ trait ServiceMockHelperTrait
1515
/**
1616
* @param class-string<object> $class
1717
*
18-
* @return array{0: MockObject, 1: class-string}
18+
* @return array{0: MockObject|mixed, 1: class-string|false}
1919
*/
2020
private function __createMockedServiceParameter(
2121
string $class,
@@ -48,27 +48,26 @@ private function __createMockedServiceParameter(
4848
$type = $type->getTypes()[0];
4949
}
5050

51+
$defaultValue = false;
52+
5153
if ($type->isBuiltin()) {
52-
throw new \LogicException(
53-
sprintf(
54-
'Specify parameter $%s in %s::%s',
55-
$parameter->getName(),
56-
$class,
57-
$method->getName()
58-
)
59-
);
60-
}
54+
if (!$parameter->isDefaultValueAvailable()) {
55+
throw new \LogicException(
56+
sprintf(
57+
'Specify parameter $%s in %s::%s',
58+
$parameter->getName(),
59+
$class,
60+
$method->getName()
61+
)
62+
);
63+
}
6164

62-
/**
63-
* @var class-string<object> $final
64-
*
65-
* @noinspection PhpRedundantVariableDocTypeInspection
66-
*/
67-
$final = $type->getName();
65+
$defaultValue = $parameter->isDefaultValueAvailable();
66+
}
6867

6968
return [
70-
$this->createMock($final),
71-
$type->getName(),
69+
$defaultValue ? $parameter->getDefaultValue() : $this->createMock($type->getName()),
70+
$defaultValue ? false : $type->getName(),
7271
];
7372
}
7473

@@ -95,6 +94,10 @@ private function __createAndGetMethodParams(
9594
[$mocked, $type] = $this->__createMockedServiceParameter($class, $parameter, $method);
9695
$params[] = $mocked;
9796

97+
if (false === $type) {
98+
continue;
99+
}
100+
98101
$this->mocks[$class][$type] = $mocked;
99102
}
100103

0 commit comments

Comments
 (0)