【发布时间】:2019-12-14 21:51:07
【问题描述】:
我试图模拟一个作为依赖注入另一个类的单例类。由于显而易见的原因(单例发生在模拟之前,在服务容器级别/AppServiceProvider 级别),该类是常规实例而不是模拟对象。
类构造函数如下所示:
/**
* constructor.
*/
public function __construct()
{
$this->classToBeMocked = resolve('ClassToBeMocked');
}
我不得不把它改成
/**
* constructor.
*/
public function __construct(ClassToBeMocked $classToBeMocked)
{
$this->classToBeMocked = $classTobeMocked;
}
并停止使用单例。
关于如何在 laravel 中模拟单例或重新实例化单例的任何见解,以便在测试中模拟一次后生效。
谢谢
【问题讨论】:
-
您的示例代码完全相同,通常您将所有内容模拟并在测试中调用 api,然后首先将其实例化,我可以看看您如何调用您的应用程序吗?
标签: laravel mocking phpunit singleton laravel-5.8