使用 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>';
我尝试使用 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>';