【发布时间】:2019-07-07 00:20:30
【问题描述】:
就我而言,我有一个类,例如:
class Logger
{
/**
* @var EntityManager
*/
protected $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @param Model $model
*/
public function log(Model $model)
{
$logEntity = new LogEntity();
$logEntity->setOrder($model->getOrder());
$logEntity->setType($model->getType());
$logEntity->setScore($model->getScore());
$logEntity->setCreated(new DateTime());
$logEntity->setModified(new DateTime());
$this->entityManager->persist($logEntity);
$this->entityManager->flush();
return $logEntity;
}
Logger 类不可测试,因为在我的代码中存在“new”关键字,另一方面,Logger 类和 EntityManager 类在容器中注册了 singleton 并且无法将模型作为依赖项注入。
如何更改类以更改为可测试类?
LoggerModel 是一个 Doctrine 实体,在 Laravel 框架中使用。
【问题讨论】:
标签: php laravel unit-testing doctrine phpunit