如何在AngularJS中模拟后端?

时间:2013-05-07 21:59:16

标签: javascript testing angularjs mocking

我的角度应用程序通过REST API与我的服务器通信。我想嘲笑这个API来快速开发前端。

我看到了两种方法:

  1. 使用ngMockE2E $httpBackend。这需要:

    • 启动简单的静态文件服务器(例如python -m SimpleHTTPServer
    • 在我的客户端
    • 中加载angular-mocks.js
    • 配置模拟$httpBackend以返回我想要的内容。

    下行:必须具有确定是否使用模拟后端的客户端逻辑。此外,不会模拟实际的$ httpRequests,我们可能会对所有flush()调用感到困惑。

  2. 创建一个实际的模拟后端。例如。启动一个非常基本的node.js服务器,它将响应实际的 xhr请求。

    下行:?

  3. ngMockE2e $ httpBackend似乎是其他人正在使用的,但我不确定为什么。拥有一个真实的(模拟)后端似乎更直接,并且在开发过程中不太可能导致错误。

4 个答案:

答案 0 :(得分:0)

只需在.json旁边创建一个index.html文件即可。让你的$http请求获取包含你后端返回的数据的json文件。这是模拟后端的最简单方法。当然,我假设您通过Web服务器为您的角应用程序提供服务。如果您尚未运行Web服务器,则此解决方案无法运行。

在生产中,你可以用实际的REST端点替换这个json文件的url。

答案 1 :(得分:0)

我有类似的问题,我开始使用ganaraj建议的一个简单的.json文件,但是在我需要测试数据修改时转移到一个简单的node.js服务器。

ngMockE2e实际上用于测试,而非设计用于实际用作RESTful服务器。在您提供的链接的示例中,如果您要为特定电话运行GET,则必须循环通过电话阵列以找到所需的电话。

答案 2 :(得分:0)

回答类似的问题here

基本上你包括角度后的角度模拟,并使用this gist中提供的代码 并且您将能够控制请求和响应,包括标头和假响应延迟等。

答案 3 :(得分:0)

有关替代更自动化的后端模拟方法,请查看与swagger-api-mock一起使用的rest-json。 这些模块可以用来生成$ httpBackend响应:rest-json.js作为json数据的http类似访问,swagger-api-mock / lib / mock-data.js作为基于swagger的json模拟数据对象的生成器(或json架构)定义