_objectManagerMock = $this->createMock(\Magento\Framework\ObjectManagerInterface::class); $this->_factory = new TemplateEngineFactory( $this->_objectManagerMock, ['test' => \Fixture\Module\Model\TemplateEngine::class] ); } public function testCreateKnownEngine() { $engine = $this->createMock(\Magento\Framework\View\TemplateEngineInterface::class); $this->_objectManagerMock->expects( $this->once() )->method( 'create' )->with( \Fixture\Module\Model\TemplateEngine::class )->will( $this->returnValue($engine) ); $this->assertSame($engine, $this->_factory->create('test')); } /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Unknown template engine type: 'non_existing' */ public function testCreateUnknownEngine() { $this->_objectManagerMock->expects($this->never())->method('create'); $this->_factory->create('non_existing'); } /** * @expectedException \UnexpectedValueException * @expectedExceptionMessage Fixture\Module\Model\TemplateEngine has to implement the template engine interface */ public function testCreateInvalidEngine() { $this->_objectManagerMock->expects( $this->once() )->method( 'create' )->with( \Fixture\Module\Model\TemplateEngine::class )->will( $this->returnValue(new \stdClass()) ); $this->_factory->create('test'); } }