使用 Codeception 进行测试时不允许使用 Yii2 方法

Yii2 Method is not allowed in testing with Codeception

我尝试使用 Codeception 测试我的代码,但当我测试注销选项时,我的测试(包括功能测试和验收测试)失败了。它们以 "Method is not allowed (405)" 失败,因为它们是通过 GET 方法发送的。 我在 Nav 小部件中有开箱即用的代码:

$menuItems[] = ['label' => 'Logout (' . Yii::$app->user->identity['username'] . ')',
                                'url' => ['/site/logout'],
                                'linkOptions' => ['data-method' => 'post']

当我手动单击 link 时,这段代码工作正常。在这种情况下,它们是通过 POST 方法发送的。 但它在测试时不起作用。 为什么会这样?

对于注销,您可以添加如下表单,这将使用 POST

发送请求
$menuItems[] = '<li>'
        . Html::beginForm(['/site/logout'], 'post')
        . Html::submitButton(
                'Logout ('.Yii::$app->user->identity['username'].')', ['class' => 'btn btn-link btnlogout']
        )
        . Html::endForm()
        . '</li>';