单元测试:使用构造函数依赖注入模拟服务 class
Unit test: Mock service class with constructor dependency injection
是否可以(并且值得推荐)创建通过构造函数注入加载依赖项的服务模拟 类?
Class:
class SettingsService
{
public function __construct(SiteFinder $siteFinder)
{
$this->siteFinder = $siteFinder;
}
}
测试:
$mockService = $this->getMockBuilder(SettingsService::class)->getMock();
这会导致错误:函数参数太少... 0 已通过
有没有办法在 phpunit 中使用自动加载器?还是我必须创建所有注入的单个模拟 类 并将它们分配给彼此?
在单元测试中,一切都是:“你靠自己”,但是一个好方法是使用预言框架将存根注入你的 class。
如果您不需要测试中的对象,这完全是正确的方法,如果您依赖它们,您宁愿使用功能/集成测试,在那里您可以获得依赖注入由交付的框架(但为了 trade-off 速度),但取决于您要测试的内容/您的范围是什么。
是否可以(并且值得推荐)创建通过构造函数注入加载依赖项的服务模拟 类?
Class:
class SettingsService
{
public function __construct(SiteFinder $siteFinder)
{
$this->siteFinder = $siteFinder;
}
}
测试:
$mockService = $this->getMockBuilder(SettingsService::class)->getMock();
这会导致错误:函数参数太少... 0 已通过
有没有办法在 phpunit 中使用自动加载器?还是我必须创建所有注入的单个模拟 类 并将它们分配给彼此?
在单元测试中,一切都是:“你靠自己”,但是一个好方法是使用预言框架将存根注入你的 class。
如果您不需要测试中的对象,这完全是正确的方法,如果您依赖它们,您宁愿使用功能/集成测试,在那里您可以获得依赖注入由交付的框架(但为了 trade-off 速度),但取决于您要测试的内容/您的范围是什么。