(PHP)使用依赖注入 (DI) 进行单元测试

发布于 2024-12-09 01:26:40 字数 577 浏览 0 评论 0原文

在过去的几天里,我阅读了很多有关依赖注入的内容。 现在,由于我正在尝试升级我的 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 中创建事件对象的建议方法是什么?

Over the past few days i read a lot about Dependency Injection.
Now since I am trying to upgrade my phpunit skills i was thinking how to implement this DI. in my unit tests.

Say I have two objects:

class Event{
}

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

This how i essentially understand DI.
Now I want to write a test for my shift constructor:

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

But now i dont want to define here a complete event object. So what is the adviced way to create my event object in phpUnit?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一片旧的回忆 2024-12-16 01:26:40

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

This is what mocks, stubs. etc. are used for. You create a SUT (system under test), and mock out all dependencies.
You wouldn't be able to do this without DI in the first place.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文