如何在不实际导航到登录页面并输入您的凭据的情况下登录验收测试?

How to log in in an acceptance test without actually navigating to the login page and entering your credentials?

在Yii2的功能测试中,有一个方法amLoggedInAs($user)

$I->amLoggedInAs(
    User::find()->where('id = 1')->one()
);

但是对于验收测试,没有这样的方法。我的大部分测试都要求用户登录,而我看到的唯一登录方式是以编程方式导航到登录页面并输入您的凭据,如果每次测试都重复这将非常耗时。

如何在不进入登录页面的情况下在验收测试期间登录?实际上,我希望在 AcceptanceTesterFunctionalTester 中看到 amLoggedInAs($user)

不,你不能。

登录通常使用会话变量,您无法在验收测试中访问它们。
如果您可以在不实际登录的情况下访问受限页面,那将是您网站的一个主要安全漏洞,所以您不能登录是件好事。

你需要的是在验收测试时执行登录,然后执行你的功能。

这是您问题的最佳答案:https://www.yiiframework.com/forum/index.php/topic/69572-acceptance-test-reuse-login-code/