gpt4 book ai didi

javascript - 回调函数的 mocha-phantomjs 测试用例

转载 作者:行者123 更新时间:2023-11-29 15:39:04 24 4
gpt4 key购买 nike

我有一个模块,其中我有这个功能

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 的回调中时,您告诉 Mocha 测试是异步的,然后您必须在异步回调中调用它 ( handleData here) 告诉 Mocha 测试已经结束。

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

关于javascript - 回调函数的 mocha-phantomjs 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22837124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com