Protractor 正确使用带$httpBackend的量角器

Protractor 正确使用带$httpBackend的量角器,protractor,angularjs-e2e,httpbackend,Protractor,Angularjs E2e,Httpbackend,我读过有关量角器工作原理的文章,我在其中编写了几个E2E测试,但我仍然对将其与$httpBackend服务一起使用感到不舒服,我认为可能我遗漏了图片中的一个重要部分 为了模拟HTTP调用,我需要使用Angular的ngMockE2E模块中提供的。要将该模块包含在我正在测试的应用程序中,我需要在引导主模块时将其配置为其依赖项,如下所示: angular.module('myApp', ['ngMockE2E', 'bunch-of-other-dependencies']) 这实际上意味着我需

我读过有关量角器工作原理的文章,我在其中编写了几个E2E测试,但我仍然对将其与
$httpBackend
服务一起使用感到不舒服,我认为可能我遗漏了图片中的一个重要部分

为了模拟HTTP调用,我需要使用Angular的
ngMockE2E
模块中提供的。要将该模块包含在我正在测试的应用程序中,我需要在引导主模块时将其配置为其依赖项,如下所示:

angular.module('myApp', ['ngMockE2E', 'bunch-of-other-dependencies']) 
这实际上意味着我需要将E2E测试的初始化与生产初始化分开。这也意味着我需要单独的
index.html

维护这两个与根“几乎”相同的附加文件似乎很麻烦。此外,单独的索引和模块定义意味着测试将在与产品稍有不同的应用程序上进行测试,这对我来说似乎违背了它的目的

我是否正确理解了这里的谜题,或者我遗漏了什么? 有没有更好的解决方案来运行带有角度的E2E测试?
或者,如果维护烦恼确实不可避免的话,至少有一些解决办法可以将其影响降至最低?

我找到了一个可能适合您的解决办法

我在html页面中定义我的应用程序,并将我的基本模块和ngMockE2E添加为依赖项。在我的dist构建中,我添加了grunt processhtml,它删除构建之间的所有内容:删除注释

在grunt服务中,我没有包含grunt processhtml,因此它使用$httpBackend运行。以同样的方式,我添加了在dist构建中删除的httpBackend期望

angular.module('myApp', [
    'myAppModule'
 <!-- build:remove -->
 <!-- including ngMock to test locally, but build remove wil make sure it's not in the dist -->
    , 'ngMockE2E'
    <!-- /build -->
    '
]) ;
angular.module('myApp'[
“myAppModule”
“ngMockE2E”
'
]) ;
设置起来有点麻烦,但一旦设置好,它就提供了很大的灵活性