javascript - 使用 Sinon.js 为 Angular.js 应用程序设置 RESTful 后端模拟

标签 javascript json angularjs xmlhttprequest sinon

我正在开发一个 Angular.js 应用程序,它具有扩展 $resource 服务的 RESTful 服务。这个应用程序将来会连接到 Java Spring 应用程序,但现在我正在尝试设置一个隔离的模拟,它将为我的应用程序从客户端提供所有必要的路由。我之前使用 Sinon.js 创建了一个伪造的客户端服务器,当我使用其他 MV* 框架(例如 Backbone.js)开发其他应用程序时,它为我的路由提供服务。

看起来,与 JQuery/Backbone 执行的用于获取 JSON 数据的“标准”ajax 调用不同,Angular 使用 XHR 的方式不同,它并没有被 Sinon 从客户端劫持请求和响应的尝试“愚弄”。

我尝试使用 $httpBackend 创建带有现成数据的虚假路由,但似乎该服务仅用于单元测试,而不用于我需要设置的“暂存环境”。

这是我的 Sinon 设置的样子,它适用于 JQuery.ajax,但不适用于 Angular $resource 或 $http:

var server = sinon.fakeServer.create();
server.respondWith("GET", /mydata/gi, [200,
    { "Content-Type": "application/json" },
    JSON.stringify({
        data: "myData"
    })
]);
server.autoRespond = true;

关于这如何不适用于 Angular 的任何想法?或者更好的是,有人知道如何为 Angular 应用程序设置此类模拟吗?

最佳答案

我相信"e2e" (end to end) $httpBackend mock正是您要寻找的。

引用文档: “对于适合端到端测试或无后端开发的假 HTTP 后端实现,请参阅 e2e $httpBackend mock。”

“与单元测试相反,在端到端测试场景中或在开发应用程序时将真实后端 api 替换为模拟的场景中,通常希望绕过某些类别的请求模拟并发出真正的 http 请求(例如从网络服务器获取模板或静态文件)。”

我还找到了一个 good article描述一些在 Angular 中使用假后端的优雅方法。

关于javascript - 使用 Sinon.js 为 Angular.js 应用程序设置 RESTful 后端模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18696204/

相关文章:

javascript - AngularJS中的多个图像上传错误

javascript - 使用 jQuery 获取 div 中每个图像的源

javascript - 在 Ext JS 中动态显示/隐藏子面板

javascript - 带有查询字符串值的 Android 自定义 URL 方案

javascript - 如何查找具有起始值的输入字段

c# - 将 JSON 字符串反序列化为自定义 Java 对象

ios - 在swift 4中从字典中提取数据

javascript - AngularJS - 获取插入dom的数据

jquery - 使用 Ajax 提交表单的不同方法

angularjs - 在 browser.get 之前设置 cookie