【发布时间】:2016-05-13 07:25:25
【问题描述】:
我怀疑我的问题的“最佳”答案是使用依赖注入并完全避免该问题。不幸的是,我没有那个选项...
我需要为一个导致第三方库被实例化的类编写一个测试。我想模拟/存根库类,这样它就不会进行实时 API 调用。
我在 CakePHP v3.x 框架中使用 phpunit。我能够模拟库并创建存根响应,但这并不能阻止“真实”类被我的测试之外的代码实例化。我考虑尝试从实例化上游模拟类,但它们有很多 ,这会使测试难以编写/维护。
有没有办法以某种方式“存根”类的实例化?类似于我们可以告诉 php 单元期待 API 调用并预设返回数据的方式?
【问题讨论】:
-
您声明不能注入依赖项,但是您可以替换工厂调用的“new”语句吗?这样你就可以控制工厂并让他们返回模拟。
标签: php unit-testing mocking phpunit