如何对ajax调用进行单元测试

时间:2015-01-24 02:51:29

标签: jquery ajax unit-testing js-test-driver

我是为JavaScripts创建单元测试的新手。在我的单元测试中,我继续得到“AssertError:expected”ok“但是[undefined] “结果。能教会我如何对ajax调用进行单元测试吗?谢谢。顺便说一下,我正在使用JsTestDriver来测试我的单元测试。

这是我的源文件:

function getReport(m, y)
{
$.ajax({
    url: "url/to",
    data: {
        m:m,
        y:y
    },
    dataType: 'json',
    success:function (res) {
            return res;

    }       
});

}

这是我的测试文件:

TestCase("Report", {

  "test get report": function () {
 assertEquals("ok", getReport(1, 2015));
}   
});

1 个答案:

答案 0 :(得分:3)

在我们进一步讨论你的问题之前,让我问一下:为什么你需要测试Ajax请求?通常,通过单元测试,您无需测试供应商代码和功能,例如第三方功能,API,网络问题,数据库等。专注于对您的团队和您创建的代码进行单元测试。让供应商测试他们的代码。在这个特定的例子中,jQuery Ajax应该由jQuery提供程序测试,而不是你。

还有另一个原因,你不应该测试Ajax:测试将从单元测试转移到集成测试,因为你测试后端从服务器返回正确的值。话虽这么说,你测试客户端+服务器代码如何协同工作。

正确的方法是使用模拟,间谍或存根将您的单元测试与外部调用隔离开来。如果你不确定它们是什么 - 在互联网上搜索。所有流行的单元测试框架和库都支持并提供了使用它们的简便方法。

您可能还想测试它,为此目的,请访问相关帖子:Unit testing AJAX requests with QUnit

单位测试祝你好运!