/** * @test */ function it_assembles_a_type() { $assembler = new IteratorAssembler(); $context = $this->createContext(); $assembler->assemble($context); $code = $context->getClass()->generate(); $expected = <<<CODE namespace MyNamespace; use IteratorAggregate; class MyType implements IteratorAggregate { /** * @return \\ArrayIterator */ public function getIterator() { return new \\ArrayIterator(is_array(\$this->prop1) ? \$this->prop1 : []); } } CODE; $this->assertEquals($expected, $code); }