Как протестировать метод, который возвращает генератор и вызывает пользовательскую функцию при выходе
final class SomeClass implements ArgumentValueResolverInterface
{
public function supports(Request $request, ArgumentMetadata $argument): bool
{
//some code here
}
public function resolve(Request $request, ArgumentMetadata $argument): \Generator
{
//some code here
$callable = [$object, 'methodToCall'];
if (\is_callable($callable)) {
yield \call_user_func($callable, $someData);
}
}
}
Это реализация ArgumentValueResolverInterface в Symfony. Я не уверен, как писать тесты для метода разрешения, поскольку он использует call_user_func при выходе. Я издевался над всем и получаю желаемый результат, но не знаю, как это проверить, когда верну генератор. Я использую PHP Unit для тестирования.
class SomeClassTest extends TestCase
{
public function someTest(): void
{
//mocking and whatnot
$generator = $object->resolve($mockRequest, $mockArgumentMetadata);
//what now?
}
}