如何在回调函数javascript中使用断言
我在测试用例中有以下代码:如何在回调函数javascript中使用断言,javascript,unit-testing,asynchronous,callback,js-test-driver,Javascript,Unit Testing,Asynchronous,Callback,Js Test Driver,我在测试用例中有以下代码: flickrJson.prototype.testFlickrPhotoSearch = function() { var wrongName = "googday"; var key = "3f807259749363aaa29c76012fa93945"; flickrPhotoSearch(wrongName, key, 1, handleData); } 和handleData功能: var handleData = function(photoUrl) {
flickrJson.prototype.testFlickrPhotoSearch = function() {
var wrongName = "googday";
var key = "3f807259749363aaa29c76012fa93945";
flickrPhotoSearch(wrongName, key, 1, handleData);
}
和handleData
功能:
var handleData = function(photoUrl)
{
if (photoUrl.stat)
{
if (photoUrl.stat === "ok")
{
assertEquals(1,2);
}
}
}
我想让这个测试失败。但是,当我在
handleData
函数中编写assert时,它就不起作用了。对于这种情况,我发现最好的方法是在回调函数中设置一个变量,使其成为有意义的值(或者一个值,可能一个值表示ok,另一个值表示失败),然后在测试体中等待变量被设置(包括一个超时,这样如果变量从未设置,测试将失败),然后一旦测试知道变量已设置,则断言它具有预期值
这不是特定于JavaScript或任何特定单元测试库的问题;但这是测试异步代码时固有的问题。您确定
photoUrl.stat==“ok”
调用回调?是的,我们处于这种情况。我建议使用像Mocha这样的测试运行程序,并阅读异步测试的文档。否则,您自然需要进行最小的测试(我想您已经做到了)自己支持异步测试。Mocha是一种不同的设置。我们可以在js测试驱动程序中实现这一点吗?