getFunctionMock('Thrift\Factory', 'ini_get') ->expects($this->once()) ->with('mbstring.func_overload') ->willReturn($mbstringFuncOverload); $factory = new TStringFuncFactory(); /** * it is a hack to nullable the instance of TStringFuncFactory, and get a new instance based on the new ini_get value */ $this->setPropertyValue($factory, '_instance', null); $stringFunc = $factory::create(); $this->assertInstanceOf(TStringFunc::class, $stringFunc); $this->assertInstanceOf($expectedClass, $stringFunc); } public function createDataProvider() { yield 'mbstring' => [ 'mbstring.func_overload' => 2, 'expected' => Mbstring::class ]; yield 'string' => [ 'mbstring.func_overload' => 0, 'expected' => Core::class ]; } }