public function testParseModificationExceptionWithEvent() { $modifier = new CallbackTransformer(function (ParameterBag $item) { throw new ModificationException(); }); $item = $this->createItem(); $parser = new DefaultParser(); $parser->addModifier($modifier, 1, false); $parser->getEventDispatcher()->addListener(FeedEvents::ITEM_MODIFICATION_FAILED, function (FailedItemModificationEvent $event) { $event->setContinue(true); }); $parser->parse($item); $this->assertInstanceOf(ScrapedItemBag::class, $item); }
/** * @inheritdoc */ public function build(ParserTypeInterface $type, array $options) { $resolver = $this->getOptionsResolver($type); $type->build($this, $resolver->resolve($options)); $parser = new DefaultParser($this->eventDispatcher); foreach ($this->modifiers as $position => list($modifier, $continue)) { $parser->addModifier($modifier, $position, $continue); } return $parser; }