setStaticPropertyValue('extra_methods', []); // Add named extension config like we would in yaml Config::modify()->merge(DataObject::class, 'extensions', ['NamedExtension' => NamedExtension::class]); } public function testHasNamedExtension() { $this->assertTrue(DataObject::has_extension(NamedExtension::class)); $instance = new DataObject(); $this->assertTrue($instance->hasMethod('getTestValue')); $this->assertSame('test', $instance->getTestValue()); } public function testRemoveNamedExtension() { Config::modify()->merge(DataObject::class, 'extensions', ['NamedExtension' => null]); $this->assertFalse(DataObject::has_extension(NamedExtension::class)); $instance = new DataObject(); $this->assertFalse($instance->hasMethod('getTestValue')); } public function testRemoveNamedExtensionException() { Config::modify()->merge(DataObject::class, 'extensions', ['NamedExtension' => null]); $instance = new DataObject(); $this->expectException(BadMethodCallException::class); $instance->getTestValue(); } }