什么是PHPUnit测试的存根功能的正确方法?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了什么是PHPUnit测试的存根功能的正确方法?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为连接到API的类编写一些单元测试.

我想要做的是改变类,以便不是实际连接到API,而是加载一个预先获取的常量夹具.实际执行cURL请求并返回数据的类中的方法受到保护,这是我想要更改的那个而不是返回fixture文件内容.

我的问题是,最好的方法是什么

我在PHPUnIT中读过关于模拟对象的内容,但是因为我想要更改的方法是内部的和受保护的,我不认为我可以使用它们吗?

是否正确假设我需要扩展类并自己更改方法

谢谢.

解决方法

Mocks和Stubs的目的是取代依赖于依赖性的功能,例如:当你有类似的东西

class Foo
{
    public function __construct($apiConnector) {
        $this->apiConnector = $apiConnector
    }
}

其中$apiConnector是用于调用API的依赖项,然后使用您自己的实现来存根或模拟该依赖项.由于该依赖关系是通过Foo的公共面向接口调用的,因此您可以在依赖关系中存根触发受保护方法方法.

但是,如果没有依赖关系,但是对API的调用是从testclass进行的,那么你必须编写一个自定义类来扩展你的testclass并实现它自己的API调用函数,例如:

class FooMock extends Foo
{
    PRotected function queryAPI()
    {
        return $fixture;
    }
}

然后,您将测试此类而不是实际的类.

如果您的类实际连接到WebService,请参阅第Stubbing and Mocking WebServices

脚本宝典总结

以上是脚本宝典为你收集整理的什么是PHPUnit测试的存根功能的正确方法?全部内容,希望文章能够帮你解决什么是PHPUnit测试的存根功能的正确方法?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。