Как протестировать метод, который возвращает генератор и вызывает пользовательскую функцию при выходе

      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?
    }
}

0 ответов

Другие вопросы по тегам