【问题标题】:How to use asserts in callback function javascript如何在回调函数javascript中使用断言
【发布时间】:2014-01-27 23:59:33
【问题描述】:

我在测试用例中有以下代码:

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 函数中编写断言时,它不起作用。

【问题讨论】:

  • 您确定photoUrl.stat === "ok" 并且正在调用回调吗?
  • 是的,我们处于这种状态。
  • 我建议使用像 Mocha 这样的测试运行器,并阅读其文档以进行异步测试。否则,您自然需要自己制作最小的测试工具(我想您已经拥有)支持异步测试。
  • Mocha 是不同的设置。我们可以在 js-test-driver 中这样做吗?

标签: javascript unit-testing asynchronous callback js-test-driver


【解决方案1】:

对于这种情况,我发现最好的方法是在回调中将变量设置为一些有意义的值(或值 - 可能一个表示正常,另一个表示失败),然后在测试主体中等待变量设置(包括超时,因此如果变量从不设置,测试将失败),然后一旦测试知道变量已设置 - 断言它具有预期值。

这不是 JavaScript 或任何特定单元测试库所特有的问题;但这是测试异步代码时固有的问题。

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    相关资源
    最近更新 更多