Angularjs 使用ngMockE2E的模拟httpBackend量角器不工作

Angularjs 使用ngMockE2E的模拟httpBackend量角器不工作,angularjs,protractor,ngmocke2e,Angularjs,Protractor,Ngmocke2e,遵循此处所述的基本指导原则https://www.npmjs.com/package/ng-mock-e2e 但正常的REST调用仍在调用中 'use strict' var HttpBackend = require('httpbackend'); var backend = null; var Injector = require('./helpers/injector'); var ngMockE2E = require('ng-mock-e2e'); var $httpBackend

遵循此处所述的基本指导原则
https://www.npmjs.com/package/ng-mock-e2e

但正常的REST调用仍在调用中

'use strict'

var HttpBackend = require('httpbackend');
var backend = null;
var Injector = require('./helpers/injector');
var ngMockE2E = require('ng-mock-e2e');
var $httpBackend = ngMockE2E.$httpBackend;

describe("Login", function () {

    var loginJsonStub,
        loginPage = require('./pageObjects/LoginPage.js');

    beforeEach(function () {

        browser.get('http://localhost:9001/#');

        var injector = new Injector();
        injector.get('loginJson').then(function (result) {
            loginJsonStub = result;
        })
    });

    beforeEach(function () {
        ngMockE2E.addMockModule();
        ngMockE2E.addAsDependencyForModule('myApp');
        ngMockE2E.embedScript('../../app/bower_components/angular-mocks/angular-mocks.js');
    });

    afterEach(function () {
        ngMockE2E.clearMockModules();
    });

    describe("Routing", function () {

        it('should redirect to answerset page immediately if only 1 project', function () {

            $httpBackend.when('POST', '/authentication/login').respond({data: 123});

            element(by.id('userName')).sendKeys('xx\\svijver');
            element(by.id('passWord')).sendKeys('password');

            //browser.pause();

            loginPage.nextButton.click();

            browser.getLocationAbsUrl();
            expect(browser.getCurrentUrl()).toContain('answersets/1');
            expect(browser.getCurrentUrl()).toBe('answersets/1');

            browser.pause();

        });
    });
});
这应该没那么难,有人能指出我忽略了什么吗? 尝试了其他几家第三方供应商模仿httpBackend,但无法使其正常工作。也许实际应用中最初的$http调用推翻了模拟的调用

--编辑--

根据Angular文档,将ngMockE2e依赖项添加到我的主应用程序Angular.module('qApp'、['…'、'…'、'…'、'…'、'ngMockE2e'])会导致各种奇怪的错误:

错误:意外请求:获取 不需要更多的请求 $httpBackend(angularmocks.js:1263)


当运行量角器时,它会突然看到对我的UI元素的引用,这是有意义的,因为它不再加载了。

首先,似乎您正在使用一个旧的、独立的ng-mock-e2e版本。您应该使用angular的angular Mock中的版本:

在项目中包含角度模拟后,可以在测试文件中添加以下内容:

beforeEach(function () {
    // choose a unique name for your mock-module, like httpMocker
    browser.addMockModule('httpMocker', function () {
        angular.module('httpMocker', ['ngMockE2E'])
            .run(function ($httpBackend) {
                // define your routes
            });
        );
    });
});
beforeEach(function () {
    // choose a unique name for your mock-module, like httpMocker
    browser.addMockModule('httpMocker', function () {
        angular.module('httpMocker', ['ngMockE2E'])
            .run(function ($httpBackend) {
                // define your routes
            });
        );
    });
});