首页 > 解决方案 > 测试代码运行速度比数据库查询快

问题描述

我正在使用本地数据库编写测试,我知道不建议使用实际数据库,但不使用它对我来说并不是一个真正的选择。目前我面临一个问题,即我的测试执行速度比将数据放入数据库的速度更快。

        $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);
    }

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

标签: phpunit

解决方案


推荐阅读