ajax - 如何使用 Jasmine BDD 为 ajax 函数创建 stub

标签 ajax unit-testing bdd jasmine

我正在努力寻找有关如何使用 Jasmine BDD 伪造 ajax 调用的任何示例?

我有一个自定义的 ajax 函数,它的工作原理是这样的......

ajax({
    url: 'JSON.php',
    dataType: 'json',           
    onSuccess: function(resp) {
        console.log(resp);
    }
});

...我不知道如何创建一个 stub 来假调用实际的 ajax 函数。

我想避免调用 ajax 函数,因为如果对服务器的真正 ajax 调用需要一些时间来响应并且我的测试套件中有大量规范,它可能会减慢我的测试套件的速度。

我听说你可以使用 spyOn(namespace, 'ajax')但这很烦人,因为它需要我包装我的 ajax对象中的函数只是为了使用 spyOn函数(但无论如何我无法跟上,因为我找不到任何特定的示例来伪造 ajax 调用)。

我也听说你可以使用 createSpy()但同样,文档不是很有帮助(GitHub 上的相应 wiki 也不是)。

任何解释如何使用 spy 来创建假 ajax 调用的帮助将不胜感激!

最佳答案

您可以使用 SinonJS 模拟框架,该框架在 fake server 中构建。 .您可以轻松地将它与 Jasmine 一起使用:

beforeEach(function() {
        server = sinon.fakeServer.create();
        server.respondWith([200, { "Content-Type": "text/html", "Content-Length": 2 }, "OK"])
});

顺便提一句。如果您的 ajax 函数在全局命名空间中,为什么不调用 spyOn(window, 'ajax')

关于ajax - 如何使用 Jasmine BDD 为 ajax 函数创建 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8884060/

相关文章:

jquery - Ruby on Rails/AJAX : How can I refresh page on successful submit or display error?

python - 测试一个类是否继承自另一个

c# - 如何使用 MSTest 从命令行运行 SpecFlow 场景?

javascript - 不知道如何用 Jasmine 测试这个异步函数

javascript - 如何测试 Postman 中是否缺少(可能)嵌套的 JSON 属性?

javascript - 使用php将图像上传到文件夹以及php的ajax问题

java - 如何配置我的 servlet 来发送 Ajax 请求

python - Flask:可以创建自定义 302(重定向)页面吗?

javascript - 如何使用 Ajax 请求在 URL 中包含 GET 变量?

Swift 快速/灵活 : Ambiguous use of expect