Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为Angular.js应用程序使用Sinon.js设置RESTful后端模拟_Javascript_Json_Angularjs_Xmlhttprequest_Sinon - Fatal编程技术网

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

Javascript 为Angular.js应用程序使用Sinon.js设置RESTful后端模拟,javascript,json,angularjs,xmlhttprequest,sinon,Javascript,Json,Angularjs,Xmlhttprequest,Sinon,我正在开发一个Angular.js应用程序,它具有RESTful服务,扩展了$resource服务。这个应用程序将来将连接到Java Spring应用程序,但现在我正在尝试设置一个独立的模拟,它将为我的应用程序提供从客户端提供所有必要的路由。我以前使用Sinon.js创建了一个假的客户端服务器,当我开发其他应用程序时,使用其他MV*框架(如Backbone.js)为我的路由服务 与JQuery/Backbone执行的用于获取JSON数据的“标准”ajax调用不同,Angular使用XHR的方式有

我正在开发一个Angular.js应用程序,它具有RESTful服务,扩展了$resource服务。这个应用程序将来将连接到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应用程序设置此类模拟吗?

我相信这正是您想要的

引用文件: “有关适用于端到端测试或无后端开发的伪HTTP后端实现,请参阅。”

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


我还发现了一个例子,描述了一些优雅的方法来使用Angular中的假后端。

使用sinon.js或
$httpBackend
设置完整的存根REST服务器确实很麻烦。我建议您使用FakeRest,一个构建在sinon.js之上的假的REST服务器


免责声明:这是我们写的。

谢谢JD。但我已经试过了。不幸的是,这个模拟还应该只与测试运行程序一起运行。在没有测试运行程序的情况下,这可能需要一些调整才能实现,但要实现这一点似乎太麻烦了。我最终使用修补到Yeoman设置中的connect中间件提供了一个“真正的”模拟后端。我收回这一点,您找到的文章似乎描述了如何在非测试环境中初始化$httpBackend。我自己还没有试过,因为我有另一个有效的解决方案。我会在有机会尝试后更新,看看它是否能像我预期的那样解决我的问题。谢谢你的回答。谢谢Naor,让我知道你发现了什么。