public function testParseAndDump($code, $expectedDump)
{
$astTraverser = new PhpParser\NodeTraverser();
$astTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver());
$parser = new Parser((new ParserFactory())->create(ParserFactory::PREFER_PHP7), $astTraverser);
$traverser = new Traverser();
$traverser->addVisitor(new Visitor\Simplifier());
$printer = new Printer\Text();
try {
$script = $parser->parse($code, 'foo.php');
$traverser->traverse($script);
$result = $printer->printScript($script);
} catch (\RuntimeException $e) {
$result = $e->getMessage();
}
$this->assertEquals($this->canonicalize($expectedDump), $this->canonicalize($result));
}