簡體   English   中英

mocha-phantomjs用於回調函數的測試用例

[英]mocha-phantomjs test case for callback function

我有一個模塊,我有這個功能

flickrPhotoSearch: function (searchByName, flickrUserKey, numberOfImages, callbackData) {
    return $.ajax({
        url: commonConstants.BASE_URL + "flickr.photos.search&api_key=" + flickrUserKey + "&tags=" + searchByName + "&format=json&jsoncallback=?",
        dataType: 'json',
        async: true,
        success: function (jsonData) {
            if (jsonData.stat === commonConstants.JSON_SUCCESS) {
                if (jsonData.photos['photo'].length < commonConstants.DATA_LENGTH) {
                    callbackData(jsonData);
                } else {
                    var flickrImage = flickrApplication.jsonToImage(jsonData, numberOfImages);
                    callbackData(flickrImage);
                }
            } else {
                callbackData(jsonData);
            }
        }
    });
}

我想測試這個功能,我選擇了mocha-phantomjs 這是我的測試用例

describe("flickrphotoSearch", function () {
    it("should fail with wrong key", function () {
        flickrApplication.flickrPhotoSearch(testConstant.CORRECT_NAME, testConstant.WRONG_KEY, testConstant.CONSTANT_ONE, handleData);
        function handleData (photoUrl) {
            assert.equals(photourl.stat, "pass", photoUrl.message);
        }
    });
});

現在,通過提供錯誤"Invalid API Key"此測試應該失敗。 但它過去了。 我想這是因為我在回調函數里面使用了斷言,即handleData()

我正在使用mocha-phantomjs設置和chai斷言庫。

我搜索了教程和演示但是找不到任何東西。 我也試過mocha-phantomjs例子,但沒有幫助我在這里發帖。

請告訴我如何在mocha-phantomjs測試回調函數。

您所描述的是異步測試但正在同步測試的典型症狀。 解決方案是在測試中使用done回調:

it("should fail with wrong key", function (done) {
    flickrApplication.flickrPhotoSearch(testConstant.CORRECT_NAME, testConstant.WRONG_KEY, testConstant.CONSTANT_ONE, handleData);
    function handleData (photoUrl) {
        assert.equals(photourl.stat, "pass", photoUrl.message);
        done();
    }
});

當你將done參數添加到你給it的回調it ,你告訴Mocha測試是異步的,然后你必須在你的異步回調(這里是handleData )中調用它來告訴Mocha測試結束了。

否則,Mocha將運行給it的回調it並且不會等待handleData執行。 測試將立即結束,沒有錯誤,所以摩卡會說它已經過去了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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