javascript - 如何存根 AJAX 请求,其响应取决于传递的数据?
问题描述
我正在尝试用 Jasmine 进行单元测试。我需要模拟对同一个 URL 的两个 AJAX GET 请求,但它们的响应取决于请求中传递的数据。到目前为止,我一直无法找到有关如何使响应依赖于 URL 以外的任何内容的任何信息。
我一直在尝试使用该stubRequest
方法:
jasmine.Ajax.stubRequest('MY_URL.json')
.andReturn({
"status": 200,
"contentType": 'application/json',
"responseText": rawData
});
我还应该提到 AJAX 请求是按任意顺序发出的。此外,传递的数据只是一个参数。
解决方案
在线文档非常稀疏,但我找到了方法定义(Jasmine v3.4.0),它回答了我的问题:
this.stubRequest = function(url, data, method) {
var stub = new $ajax.RequestStub(url, data, method);
stubTracker.addStub(stub);
return stub;
};
参数是一个对象,其data
键和值是 URL 参数和值。
jasmine.Ajax.stubRequest('MY_URL.json', {param1: "value1"}, "GET")
.andReturn({
"status": 200,
"contentType": 'application/json',
"responseText": rawData
});
或者,我想。实际上,虽然这可能适用于 POST,但对于我尝试执行的 GET 请求,事实证明您必须直接将参数添加到 URL。因此,对于 OP 中的请求,
jasmine.Ajax.stubRequest('MY_URL.json?param1=value1')
.andReturn({
"status": 200,
"contentType": 'application/json',
"responseText": rawData
});
推荐阅读
- c# - Unity 与 ARKit - 启动屏幕显示真的很长时间?
- cuda - 带有 CUDA_CUB 的 dot_product
- jquery - 您是否应该在 Angular 2 项目中使用 jquery
- python - 如何找到包/功能?
- c# - 如何将“Location.X”与变量绑定?
- javascript - 如何从php获取数据到jquery
- .net - 通过 VSTS 迁移 .NET Core EF
- javascript - v 1.7.2 和 v 2.3.1 之间的“containsPoint”差异
- dart - 在地图 dart2 中搜索,与 list.indexOf 相同?
- jquery - 如何获取 data-id Laravel 的值