首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mocha.回调函数的幻影测试用例

mocha.回调函数的幻影测试用例
EN

Stack Overflow用户
提问于 2014-04-03 12:02:48
回答 1查看 347关注 0票数 3

我有一个模块,其中有一个函数

代码语言:javascript
复制
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。这是我的测试用例

代码语言:javascript
复制
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中测试回调函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-03 15:53:23

您所描述的是异步测试的典型症状,但测试是同步的。解决方案是在测试中使用done回调:

代码语言:javascript
复制
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的回调中时,您告诉Mocha测试是异步的,然后必须在异步回调(这里的handleData)中调用它,以告诉Mocha测试已经结束。

否则,Mocha将运行提供给it的回调,而不会等待handleData执行。测试将立即结束,没有错误,所以Mocha会说它已经通过了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22837124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档