Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 7 | class EventServiceFactoryTest extends \PHPUnit_Framework_TestCase |
||
| 8 | { |
||
| 9 | public function testInvokingFactoryShouldReturnExpectedInstance() |
||
| 10 | { |
||
| 11 | $articleMapper = $this->getMockBuilder(\Article\Mapper\ArticleMapper::class) |
||
| 12 | ->getMockForAbstractClass(); |
||
| 13 | $articleEventMapper = $this->getMockBuilder(\Article\Mapper\ArticleEventsMapper::class) |
||
| 14 | ->getMockForAbstractClass(); |
||
| 15 | $articleFilter = $this->getMockBuilder(\Article\Filter\ArticleFilter::class) |
||
| 16 | ->getMockForAbstractClass(); |
||
| 17 | $eventFilter = $this->getMockBuilder(\Article\Filter\EventFilter::class) |
||
| 18 | ->getMockForAbstractClass(); |
||
| 19 | $categoryMapper = $this->getMockBuilder(\Category\Mapper\CategoryMapper::class) |
||
| 20 | ->getMockForAbstractClass(); |
||
| 21 | $adminUsersMapper = $this->getMockBuilder(\Admin\Mapper\AdminUsersMapper::class) |
||
| 22 | ->getMockForAbstractClass(); |
||
| 23 | |||
| 24 | $container = $this->getMockBuilder(\Interop\Container\ContainerInterface::class) |
||
| 25 | ->setMethods(['get']) |
||
| 26 | ->getMockForAbstractClass(); |
||
| 27 | $container->expects(static::at(0)) |
||
| 28 | ->method('get') |
||
| 29 | ->will(static::returnValue(['upload' => ['public_path' => 'test', 'non_public_path' => 'test']])); |
||
| 30 | $container->expects(static::at(1)) |
||
| 31 | ->method('get') |
||
| 32 | ->will(static::returnValue($articleMapper)); |
||
| 33 | $container->expects(static::at(2)) |
||
| 34 | ->method('get') |
||
| 35 | ->will(static::returnValue($articleEventMapper)); |
||
| 36 | $container->expects(static::at(3)) |
||
| 37 | ->method('get') |
||
| 38 | ->will(static::returnValue($articleFilter)); |
||
| 39 | $container->expects(static::at(4)) |
||
| 40 | ->method('get') |
||
| 41 | ->will(static::returnValue($eventFilter)); |
||
| 42 | $container->expects(static::at(5)) |
||
| 43 | ->method('get') |
||
| 44 | ->will(static::returnValue($categoryMapper)); |
||
| 45 | $container->expects(static::at(6)) |
||
| 46 | ->method('get') |
||
| 47 | ->will(static::returnValue($adminUsersMapper)); |
||
| 48 | $factory = new \Article\Factory\Service\EventServiceFactory(); |
||
| 49 | static::assertInstanceOf(\Article\Service\EventService::class, $factory($container)); |
||
| 50 | } |
||
| 51 | } |
||
| 52 |