测试没有后端的前端应用程序

时间:2015-08-27 16:32:49

标签: javascript mocking xmlhttprequest

我的Web应用程序使用XMLHttpRequest加载运行PHP的后端服务器返回的JSON数据。然后,它使用客户端Javascript模板库在浏览器中呈现结果。

function load(src) {
    var oReq = new XMLHttpRequest();
    oReq.onload = function () {
        _this.data = JSON.parse(oReq.responseText);
        _this.render(_this.data);
    };
    oReq.open('get', src, opts.async || true);
    oReq.send();    
}
load('article.php?page=1&lang=en');
load('userprofile.php?userid=1548&lang=en');

真正的后端API article.php尚未就绪。 我想模拟/模拟article.php?page=1&lang=en的响应 为了进行端到端测试或演示应用程序

如何更改XMLHttpRequest(或模拟它)的行为,以便它不会打开HTTP连接,而是根据每个请求返回预先配置的数据?模拟应该模拟慢速连接(在返回响应之前延迟1秒)并且还支持超时(正常的XMLHttpRequest)。

1 个答案:

答案 0 :(得分:0)

更新:this是正确答案

这里有一个示例,说明我们如何伪造一个能够响应应用程序的某些特定ajax请求的RESTful服务器(其他请求将调用真实服务)

sinon.js

好的,我认为这就是答案

https://gist.github.com/duongphuhiep/f4c807309a25906fc1c1

此库用模拟对象替换XMLHttpRequest。所以我不需要重构或更改现有代码。

在此示例中:我伪造了来自backend/blog.php?page=1&lang=fr

的回复

https://github.com/philikon/MockHttpRequest

但是,由于网络延迟,我没​​有成功模拟超时。