/** * 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); }
/** * Test footprints imported from json test file * * @return void * @test */ public function testFootprintJsonImport() { $fwMocker = new ClassMocker(); $fwMocker->importFootprints(__DIR__ . '/_data/test.ref.json'); $fwMocker->mock('JSiefer\\ClassMocker\\TestFramework\\*'); $fwMocker->enable(); $test = new ObjectB(); $this->assertEquals('foobar', ObjectA::EVENT, 'Constant was not loaded correctly from test.ref.json'); $this->assertEquals(100, ObjectA::SORT, 'Constant was not loaded correctly from test.ref.json'); $this->assertInstanceOf(ObjectA::class, $test); $this->assertInstanceOf(ObjectB::class, $test); $this->assertInstanceOf(InterfaceB::class, $test); $this->assertInstanceOf(BaseMock::class, $test); }