我最近发现了一个令人敬畏的
@H_403_11@解决方法
ng-describe
软件包,它使AngularJS应用程序的单元测试非常透明,通过抽取所有必须记住/查找和写入的样板代码来加载,注入,模拟或间谍.
有人试图用量角器来描述吗?这是否有意义,我们可以从中受益吗?
引起我兴趣的事情之一是您可以轻松地嘲笑HTTP响应:
ngDescribe({ inject: '$http',// for making test calls http: { get: { '/my/url': 42,// status 200,data 42 '/my/other/url': [202,42],// status 202,data 42,'/my/smart/url': function (method,url,data,headers) { return [500,'something is wrong']; } // status 500,data "something is wrong" },post: { // same format as GET } },tests: function (deps) { it('responds',function (done) { deps.$http.get('/my/other/url') .then(function (response) { // response.status = 202 // response.data = 42 done(); }); http.flush(); }); } });
模拟HTTP响应通常有助于实现更好的e2e覆盖,并测试UI对特定情况的反应以及错误处理如何工作.这是我们正在使用的protractor-http-mock
,还有other options看起来不像ng-describe那么简单.
量角器主要用于E2E测试(使用硒鼓webdriver),这意味着您需要具有实际的后端连接(也可以是模拟后端).量角器的创始人写了
here,您的应用程序代码与测试代码分开运行,并且无法轻松访问$http服务.
通过嘲笑后端调用,即使您使用的是E2E测试工具(如量角器),您也不会进行E2E测试.为什么不返回单元测试呢.唯一的区别是,您将使用jQuery代替Protractor API,测试将使用Karma运行.然后,您可以轻松地使用ng-describe和$httpBackend,主要用于单元测试.
但是,如果你想继续这种方法,你可以检查这个Protractor issue的意见.有几个人正在为这个问题提出解决方案,如上所述,你已经在使用其中的一个.但在这种情况下,ng-describe不会帮助你.
我希望这回答你的问题.