phpunit - 测试代码运行速度比数据库查询快
问题描述
我正在使用本地数据库编写测试,我知道不建议使用实际数据库,但不使用它对我来说并不是一个真正的选择。目前我面临一个问题,即我的测试执行速度比将数据放入数据库的速度更快。
$container = self::$container;
$service = $container->get(CartService::class);
$service->addItem($user, $boxitem, $parameters);
$service->addItem($user, $boxitem, $parameters);
$service->addItem($user, $boxitem, $parameters);
$service->addItem($user, $boxitem, $parameters);
$cart=$service->getCart($user);
$service = $container->get(CartInfoService::class);
$test = $service->getFullCartData($cart, $user);
方法addItem
将一个项目添加到我的数据库中。方法,从数据库getFullCartData
中获取那些数据。items
如果我这样做,我会收到此错误 Error: Call to a member function matching() on null
,这意味着我正在尝试获得items
尚未出现的错误。如果我将addItem
方法放入在此之前运行的单独测试中,一切正常,但我真的不喜欢这个解决方案
当前解决方案:
public function testTest()
{
$user = $this->entityManager->getRepository(AdminUser::class)->findOneBy(array('id'=>4));
$boxitem = $this->entityManager->getRepository(BoxItem::class)->findOneBy(array('id'=>149));
$parameters=[
'integrity'=> 100,
'quantity'=> 1,
'price'=> 500
];
$container = self::$container;
$service = $container->get(CartService::class);
$service->addItem($user, $boxitem, $parameters);
$service->addItem($user, $boxitem, $parameters);
$service->addItem($user, $boxitem, $parameters);
$service->addItem($user, $boxitem, $parameters);
}
public function testGetFullCartData()
{
$user = $this->entityManager->getRepository(AdminUser::class)->findOneBy(array('id'=>4));
$container = self::$container;
$service = $container->get(CartService::class);
$cart=$service->getCart($user);
$service = $container->get(CartInfoService::class);
$test = $service->getFullCartData($cart, $user);
var_dump($test);
}
有没有办法让测试等待查询执行,或者在我尝试获取它之前以其他方式设置添加项目?
解决方案
推荐阅读
- javascript - 无需多次导入即可创建组件的多个实例
- vue.js - 从行vuejs计算百分比
- android - 如何从 Android 中的 ViewHolder 更改布局的颜色?
- swift - Swift - 使用 .addTarget 为 UITableViewCell 制作一个按钮
- python - 如何将这些数据框索引转换为列?
- validation - Symfony 4.1.4 - 验证注释 NotBlank 在编辑对象数据时不起作用,但在添加新对象时起作用
- css - 更简单的方法是使用 CSS 网格模板区域来跨越多个列
- python - 使用 Enum 时 Admin 中的 Django 选择
- amazon-web-services - 示例 api 网关测试事件 json
- docker - 在另一个容器中使用另一个容器