如何解决Symfony 功能测试:第二次调用 $client->request(),无缘无故改变了测试结果
我在每次测试运行之前使用 Liip\FunctionalTestBundle
和 Liip\TestFixturesBundle
加载我的装置,以获得一致的测试设置。
这是一个在执行时失败的测试:
<?PHP
namespace App\Tests\Controller;
use Liip\TestFixturesBundle\Test\FixturesTrait;
use App\Repository\UserRepository;
use Liip\FunctionalTestBundle\Test\WebTestCase;
class BetEnterTest extends WebTestCase
{
use FixturesTrait;
public function testUserEnteredBet(): void
{
$client = static::createClient();
$this->loadFixtures(array(
'App\DataFixtures\AppFixtures',// Fixtures where Users and Games are populated
));
$userRepository = static::$container->get(UserRepository::class);
// retrieve the test user
$testUser = $userRepository->findUserByUsername('john_user');
// simulate $testUser being logged in
$client->loginUser($testUser);
$userPointsAtStart = $testUser->getPoints();
$client->request('GET','/'); // if you comment this line out,the test passes,otherwise it fails
$client->request('GET','/game/2/enter'); // a user needs to pay points to enter a game
$this->assertTrue(
$testUser->getPoints() < $userPointsAtStart,'$userPointsAtStart='.$userPointsAtStart.' $testUser->getPoints()='.$testUser->getPoints()
);
}
}
游戏需要消耗一定数量的积分。该测试断言,在进入游戏后,用户的积分比进入前要少。
如果删除行 $client->request('GET','/');
,则测试通过。如果不是,则测试失败并显示消息
$userPointsAtStart=42 $testUser->getPoints()=42
Failed asserting that false is true.
只要在 $client->request()
之前有另一个 $client->request('GET','/game/2/enter');
调用,无论请求哪个页面,测试都会失败。
为什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。