簡體   English   中英

編碼接收功能測試未通過

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM