当前位置: 首页 > 后端技术 > PHP

编写Laravel测试代码(四)

时间:2023-03-30 00:19:43 PHP

在写单元测试的时候,有时候需要测试A类的protected或者private方法,可以使用ClassReflection来做,而不是改成public破坏封装。只需在laravel的抽象TestCase类中添加一个方法:/***调用一个类的保护或私有方法。**@paramobject$object我们将在其上运行方法的实例化对象。*@paramstring$method_name要调用的方法名称*@paramarray$parameters传递给方法的参数数组。**@return混合方法返回。*/protectedfunctioninvokeNonPublicMethod($object,string$method_name,...$parameters){$reflection=newReflectionClass(get_class($object));$method=$reflection->getMethod($method_name);$方法->setAccessible(true);返回$method->invokeArgs($object,$parameters);}然后在测试用例中写入测试一下:finalAccountTestextendsTestCase{publicfunctiontestValue(){$account=newAccount()//actual$values=$this->invokeNonPublicMethod($account,'privateMethod',[1,2,3]);//$values=$this->invokeNonPublicMethod($account,'protectedMethod',[2,3,4]);//断言...}}

最新推荐
猜你喜欢