首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟httpBackend量角器与ngMockE2E不工作

模拟httpBackend量角器与ngMockE2E不工作
EN

Stack Overflow用户
提问于 2016-03-14 10:58:57
回答 1查看 945关注 0票数 0

遵循这里描述的基本指南,https://www.npmjs.com/package/ng-mock-e2e

但正常的REST呼叫仍在被调用。

代码语言:javascript
复制
'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调用正在推翻被嘲弄的应用程序?

-编辑--

根据角度文档,将ngMockE2e依赖项添加到我的主要应用程序angular.module('qApp', ['...', '...', '...', 'ngMockE2E']);中会导致各种奇怪的错误:

错误:意外请求:获取http://qubus7.test.kmsgroep.com/api/localizations/en2,不再请求$httpBackend (角-mocks.js:1263)

代码语言:javascript
复制
Uncaught SyntaxError: Unexpected identifier
angular.js:78 Uncaught Error: [$injector:nomod] Module 'qubusApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

         http://errors.angularjs.org/1.2.26/$injector/nomod?p0=qubusApp(anonymous function) @ angular.js:78(anonymous function) @ angular.js:1677ensure @ angular.js:1601module @ angular.js:1675(anonymous function) @ MainController.js:4
angular.js:78 Uncaught Error: [$injector:nomod] Module 'qbs.models' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
    http://errors.angularjs.org/1.2.26/$injector/nomod?    p0=qbs.models(anonymous function) @ angular.js:78(anonymous function) @ angular.js:1677ensure @ angular.js:1601module @ angular.js:1675(anonymous function) @ loginModel.js:3

angular.js:78 Uncaught Error: [$injector:nomod] Module 'qbs.models' is not   available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

在运行Protractor的同时,它突然看到了对我的UI元素的引用,这是有意义的,因为它不再加载。

EN

回答 1

Stack Overflow用户

发布于 2017-02-09 09:29:44

首先,似乎您使用的是ng-模拟-e2e的一个旧的独立版本。您应该在角-模拟从角:https://docs.angularjs.org/api/ngMockE2E中的版本中使用该版本。

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

代码语言:javascript
复制
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
            });
        );
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35985679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档