【问题标题】:(PHP)Unit testing with dependency injection (DI)(PHP) 使用依赖注入 (DI) 进行单元测试
【发布时间】:2011-10-09 10:20:52
【问题描述】:

在过去的几天里,我阅读了很多关于依赖注入的内容。 现在,因为我正在尝试升级我的 phpunit 技能,所以我在考虑如何实现这个 DI。在我的单元测试中。

假设我有两个对象:

class Event{
}

class Shift{
    public function __construct(Event $e)
    {
        (...)
    }
}

这就是我对 DI 的基本理解。 现在我想为我的班次构造函数写一个测试:

class ShiftTest extends
    \ModelTestCase
{
    public function testCanCreateShift()
    {
        $e = new \Js\Entity\Event();
        $this->assertInstanceOf('JS\Entity\Shift', new \JS\Entity\Shift($e));
    }
}

但现在我不想在这里定义一个完整的事件对象。那么在 phpUnit 中创建我的事件对象的建议方法是什么?

【问题讨论】:

标签: php dependency-injection phpunit


【解决方案1】:

这就是模拟,存根。等用于。您创建一个 SUT(被测系统),并模拟所有依赖项。 首先,如果没有 DI,您将无法做到这一点。

【讨论】:

  • 但是我应该使用存根还是模拟?
  • 最大的区别是stubs测试状态(即我做x后y的状态为z),mock测试行为(即如果我做x,y会发生) )。这是关于这个主题的强大文章:martinfowler.com/articles/mocksArentStubs.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
相关资源
最近更新 更多