/** * Make sure the test listener will validate any * object created during a test at the end of the test * * @return void * @test */ public function testListener() { $classMocker = new ClassMocker(); $classMocker->mock('TestListenerTest_SomeClass'); $classMocker->autoload('TestListenerTest_SomeClass'); $testCase = $this->getMockForAbstractClass(\PHPUnit_Framework_TestCase::class); $listener = new TestListener(); $listener->startTest($testCase); $testObject = new \TestListenerTest_SomeClass(); $testObject->expects($this->once())->method('test'); try { $listener->endTest($testCase, 0); $this->fail("Should fail"); } catch (\PHPUnit_Framework_ExpectationFailedException $e) { $this->assertStringStartsWith('Expectation failed for method name is equal to', $e->getMessage()); } // everything has been reset so no error should be thrown $listener->endTest($testCase, 0); }
/** * Test that all methods are called in the correct order * defined by the sortOrder parameter/tag * * @return void * @test */ public function testTraitMethodSortOrder() { $msg = 'Sort order of methods are wrong'; $instance = new \Foobar\TestClass(); $this->assertEquals('TraitC:talk', $instance->talk('test'), $msg); $this->assertEquals('TraitC:listen', $instance->listen(), $msg); $this->assertEquals('TraitC:jump', $instance->jump(), $msg); $this->assertEquals('TraitB:show', $instance->show(), $msg); $this->assertEquals('TraitB:hide', $instance->hide(), $msg); $this->assertEquals('TraitA:read', $instance->read(), $msg); // force overwrite different order $this->classMocker->mock('Demo\\*Collection'); $this->classMocker->registerTrait(TraitA::class, 'Demo\\*Collection', -10); $this->classMocker->registerTrait(TraitB::class, 'Demo\\*Collection', 50); $this->classMocker->registerTrait(TraitC::class, 'Demo\\*Collection', 100); $this->classMocker->registerTrait(DummyTrait::class, 'Demo\\*Collection'); // test different orders $collection = new \Demo\TestCollection(); $this->assertEquals('TraitA:talk', $collection->talk('test')); $this->assertEquals('TraitA:show', $collection->show()); }
public function register(ClassMocker $classMocker) { $classMocker->importFootprints(__DIR__ . '/mage.ref.json'); $classMocker->registerTrait(Mage_Core_Helper_Abstract::class); $classMocker->registerTrait(Mage_Core_Model_Abstract::class); $classMocker->registerTrait(Mage_Core_Model_App::class); $classMocker->registerTrait(Varien_Object::class, 'Varien_Object', 100); $classMocker->registerTrait(Varien_Data_Collection::class, 'Varien_Data_Collection', 100); $classMocker->registerTrait(Varien_Data_Collection_Db::class); $classMocker->registerTrait(MageClass\ModelFactory::class); $classMocker->registerTrait(MageClass\Registry::class); $classMocker->registerBaseClass(MageFacade::class); $classMocker->mock('Mage'); $classMocker->mock('MageClass'); $classMocker->mock('Mage_*'); $classMocker->mock('Varien_Object'); $classMocker->mock('Varien_Data_Collection'); $classMocker->mock('Varien_Data_Collection_Db'); // optional mocking if no lib exists $classMocker->mock('Varien_', true); }
<?php /** * Optional add magento lib classes * @var \Composer\Autoload\ClassLoader $loader */ $loader = (require '../../vendor/autoload.php'); $loader->add('', '../../vendor/firegento/magento/lib'); use JSiefer\ClassMocker\ClassMocker; use JSiefer\MageMock\Mage\MageFacade; use JSiefer\MageMock\MagentoMock; $magentoFramework = new MagentoMock(); $classMocker = new ClassMocker(); $classMocker->setGenerationDir('./var/generation'); $classMocker->mockFramework($magentoFramework); $classMocker->enable(); $nameResolver = new \JSiefer\MageMock\ClassNameResolver(); $nameResolver->registerNamespace('sample', 'Magemock_Sample'); MageFacade::setNameResolver($nameResolver);
/** * Test framework register * * @return void * @test */ public function testFrameworkMock() { $framework = $this->getMockForAbstractClass(FrameworkInterface::class); $framework->expects($this->once())->method('register'); $fwMocker = new ClassMocker(); $fwMocker->mockFramework($framework); }