You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

功能测试问题:loginData Cookie未按预期删除

问题:「记住我的邮箱」复选框功能测试失败

登录表单设有「记住我的邮箱」复选框,勾选并登录成功时会创建loginData Cookie保存用户邮箱;取消勾选并登录成功时,自定义认证器会查找并删除该Cookie。该逻辑在Chrome开发者工具测试正常,但功能测试失败,测试代码如下:

public function testRememberEmailCheckboxNotCheckedCookiePreExistent(): void
{
    $client = static::createClient();
    
    $cookie = new Cookie('loginData', 'chocolate', strtotime('+1 year'));
    $client->getCookieJar()->set( $cookie );

    $crawler = $client->request('GET', '/login');

    $button = $crawler->selectButton('Login');
    $form = $button->form();

    $form['_remember_my_email']->untick();

    $client->submit($form, [
        '_username' => $email,      //defined before
        '_password' => $password    //defined before
    ]);

    $this->assertResponseRedirects("/");

    $client->followRedirect();

    $this->assertResponseStatusCodeSame(Response::HTTP_OK);

    $this->assertBrowserNotHasCookie('loginData'); //Failed asserting that the Browser does not have cookie "loginData"

}

解决方案建议

  • 校验Cookie删除的参数匹配:确认自定义认证器删除Cookie时,是否正确设置了过期时间为过去值(如strtotime('-1 year')),同时保证Cookie的路径、域名和测试中设置的完全一致。路径/域名不匹配是Cookie删除失败的常见原因,比如业务代码删除时指定了/路径,但测试中添加Cookie时未指定,导致无法匹配删除。
  • 统一测试与业务的Cookie创建参数:手动添加Cookie时,复刻业务代码中创建Cookie的完整参数,比如路径、HttpOnly属性等:
    $cookie = new Cookie('loginData', 'chocolate', strtotime('+1 year'), '/', null, false, false);
    
  • 调整断言时机:followRedirect()发起新请求可能导致CookieJar状态更新延迟,可以在提交表单后、跳转前直接检查响应头中的Cookie删除指令:
    $client->submit($form, [
        '_username' => $email,
        '_password' => $password
    ]);
    // 检查重定向响应是否包含删除Cookie的Set-Cookie头
    $this->assertStringContainsString('loginData=; expires=', $client->getResponse()->headers->get('Set-Cookie'));
    $client->followRedirect();
    
  • 确保表单参数提交正确:验证_remember_my_email的字段名是否准确,以及untick()是否正确提交了取消勾选的取值(如0或false),可以手动指定提交值避免歧义:
    $formData = $form->getPhpValues();
    $formData['_remember_my_email'] = 0;
    $client->submit($form, $formData);
    

内容的提问来源于stack exchange,提问作者Matthiaasr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:10:08