Laravel:如何模拟一个类

Olo*_*f84 1 unit-testing mocking laravel

有没有很好的教程来解释如何在 Laravel 中模拟一个类?

我有点困惑,因为 Laravel 文档(5.2)只讨论了模拟门面、工作和事件(最后两个我从来没有老实说,工作我不知道它是什么)。

这基本上是我要测试的场景(简化为示例):

?php 
class A
{
  protected $B;
  public function __construct($classB)
    {
        $this->B = $classB;
    }
}
class B implements myInterface
{
   public function methodToTest();
}
Run Code Online (Sandbox Code Playgroud)

我想模拟发送给 A 类构造函数的 B 类。我应该为接口和模拟类制作新文件吗?或者也许利用嘲笑库(我在stackOverflow上看到一些这样做)?顺便去哪里看嘲讽课;我在 Laravel 文档中找不到它。

有点困惑,我提前道歉。

mop*_*922 5

Laravel 的测试文档是有限的,因为它扩展了 PHPUnit,为此已经有足够的文档:

https://phpunit.de/manual/current/en/test-doubles.html

在最基本的情况下,您将执行以下操作:

$stub = $this->createMock(B::class);
$a = new A($stub);
Run Code Online (Sandbox Code Playgroud)

您可以阅读上面链接的文档,了解 PHPUnit 提供的所有奇特功能。