【发布时间】:2021-03-20 16:27:51
【问题描述】:
我正在尝试编写我的第一个 php 单元测试。但我得到下一个错误:
错误:无法实例化接口 Doctrine\Persistence\ManagerRegistry
这是什么原因,我该如何解决?我正在使用 PHP + Symfony。 这是一个服务控制器的代码示例,我在其中使用了函数 add:
class OrdersService
{
protected $ordersRepository;
protected $manager;
protected $router;
public function __construct(OrdersRepository $ordersRepository, EntityManagerInterface $manager, RouterInterface $router)
{
$this->ordersRepository = $ordersRepository;
$this->manager = $manager;
$this->router = $router;
}
public function add($shoesid, $sizeid) {
$cart = $this->session->get('cart', []);
if(!empty($cart[$shoesid][$sizeid])) {
if(($cart[$shoesid][$sizeid]) < 3){
$cart[$shoesid][$sizeid]++;
} else {
$cart[$shoesid][$sizeid] = 3;
}
} else {
$cart[$shoesid][$sizeid] = 1;
}
$this->session->set('cart', $cart);
}
}
这是测试的代码:
class OrderTest extends TestCase
{
public function addShoes3()
{
$registry = new ManagerRegistry();
$ordersRepository = new OrdersRepository($registry);
$router = new RouterInterface();
$ordersService = new OrdersService($ordersRepository, $manager, $router);
$actual = $ordersService->add(40002, 400);
$expected = $ordersService->add(40002, 400);
$this->assertEquals($expected, $actual);
}
}
【问题讨论】:
-
嗯,你正在做的正是错误告诉你的——试图实例化一个接口。接口不是类,你不能用它们制造对象。
标签: php unit-testing symfony doctrine phpunit