[英]Codeception functional test not passing
好的,我有一個簡單的按鈕可以觸發AJAX POST請求,以便從數據庫中刪除某些內容。 我不想使用簡單的HTML鏈接來保持最佳做法(僅使用POST修改應用程序的狀態)。
無論如何,這是按鈕。
<?= Html::button('delete', ['class' => 'btn btn-primary', 'id' => 'deltoday']) ?>
這是它觸發的js。
$(document).ready(function() {
$('#deltoday').on('click', function () {
$.ajax({
url: 'delete',
type: 'POST'
});
});
});
這是控制器動作
if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
$today = Today::findOne(['user_id' => Yii::$app->user->id]);
if ($today->delete()) {
return $this->redirect('new-today');
}
}
最后,這是Codeception中的測試
$user = $I->grabFixture('user', 'user1');
$today = $I->grabFixture('today', '1');
$I->amLoggedInAs($user);
$I->amOnRoute('today/my-today');
$I->see($today['response']);
$I->click('#deltoday');
$I->seeInCurrentUrl('today/new-today');
$I->dontSeeRecord('frontend\models\Today', array('user_id' => $user['id']));
當我在實際應用上手動執行操作時,它可以按預期工作,但是,測試在Codeception中失敗。
我的第一個想法是Codeception不喜歡Ajax請求,但是,我有另一個測試使用了Yii2的pjax功能,效果很好。 也許是重定向? 此外,鑒於pjax可以正常工作(並且可以正常替換HTML中的內容),我想避免使用驗收測試。
我真的很想讓該測試正常運行,並了解我在這里做錯了什么(因為將來我將需要類似的測試)。 任何和所有幫助將不勝感激。
我確實認為您需要為此進行驗收測試。
功能測試可與PHPBrowser一起使用,但根據此頁面上的表格,PHPBrowser不支持javascript:
https://codeception.com/docs/03-AcceptanceTests#Sample-Scenario
而且您的AJAX當然使用Javascript :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.