开发和测试AngularJS应用程序(以及一般应用程序)

开发和测试AngularJS应用程序(以及一般应用程序),angularjs,Angularjs,我有一个我正在构建的应用程序,就像我在过去几年中构建的大多数应用程序一样,有一个清晰的分离:后端是RESTAPI,前端是Angular(在主干之前,在jQuery之前) 第一次测试时,很容易对REST API进行存根;在开发时,我可以做一些事情,比如静态文件服务器(比如angular seed的/scripts/web server)和放置文件。但在某一点上,我真的需要针对真正的RESTAPI进行开发和测试 在这样一个分离的应用程序的情况下,人们如何构建和启动?在过去,我有一个/dev节点脚本,

我有一个我正在构建的应用程序,就像我在过去几年中构建的大多数应用程序一样,有一个清晰的分离:后端是RESTAPI,前端是Angular(在主干之前,在jQuery之前)

第一次测试时,很容易对REST API进行存根;在开发时,我可以做一些事情,比如静态文件服务器(比如angular seed的
/scripts/web server
)和放置文件。但在某一点上,我真的需要针对真正的RESTAPI进行开发和测试

在这样一个分离的应用程序的情况下,人们如何构建和启动?在过去,我有一个
/dev
节点脚本,它可以设置各种test/dev数据库变量,然后
需要('../../server dev dir/app.js')
,但它似乎有点沉重。有没有更干净的方法


同样的测试问题:该应用确实需要根据真正的REST API进行测试,在某一点上,存根和mock的帮助非常大。

在AngularJS中,您使用
$HTTP
服务发出所有HTTP请求。测试
$http
不是你的工作。这是AngularJS团队的工作。你所关心的是:

您的后端或第三方(API)后端是否接收AngularJS代码配置的
$http
正在发送的请求

为此,AngularJS提供了模拟。当在测试中加载
angular mocks.js
时,
$http
将向它发送http请求。您可以培训
$httpBackend
如何响应任何URL


您还可以断言收到了哪些请求
$httpBackend
,以及这些请求收到了哪些数据。

很高兴再次见到您。我明白你的意思,我的问题是有时候嘲笑是不够的。当你用REST API构建一个Web应用程序时,比如说,有50个不同的路径,并从一个路径发布到另一个路径,你几乎是在模拟中重建你的整个后端API!您不喜欢使用真正在本地运行的服务器端应用程序吗?还是有更简单的方法来嘲笑它?@deitch,是的,我想你是对的。模拟后端可能涉及很多工作,但是由于响应是在
$httpBackend
中硬编码的,所以它没有从头开始重建整个后端那么糟糕。不确定这是否有效,但您可以尝试不包括
angularmocks.js
。也许这会让您的
$http
向服务器发送真正的请求。但是你必须要写异步测试,在我看来这并不坏,我不介意异步测试。我通常使用摩卡,但不管怎样,异步都不是那么糟糕。但是UI对RESTAPI的练习太多了——事实上,是全部——以至于我发现自己在重新创建它,还不如直接启动它。当我开始用AngularJS做前端时,我也试着在那里使用它。事情进展得不太顺利。茉莉花和摩卡之间有着微妙的语法差异,这会使事情变得混乱。由于AngularJS团队对Jasmine投入了大量资金,所有的技巧、技巧和教程都是针对Jasmine编写的,因此我最终不得不回到Jasmine,这样的旅程就不会那么坎坷了。只是抬头一看!谢谢,谢谢。我会留意的。我的RESTAPI测试的都是mocha,但我会注意WebUI中的漏洞。你能给我举几个例子吗?