测试代码运行速度快于数据库查询

时间:2021-06-30 13:47:10

标签: 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);
    }

在我尝试获取它之前,有没有办法让测试等待查询执行或以其他方式设置添加项目?

0 个答案:

没有答案