首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ngmocke2e的后续测试无法调用模拟后端。只有第一个测试才能通过。第二个测试将调用真正的后端

为什么ngmocke2e的后续测试无法调用模拟后端。只有第一个测试才能通过。第二个测试将调用真正的后端
EN

Stack Overflow用户
提问于 2015-06-26 13:51:26
回答 1查看 197关注 0票数 1

为什么ngmocke2e的后续测试不能调用模拟后台?只有第一个测试才能通过。第二个测试将调用真正的后端。

下面是我的示例代码:第一个测试将调用mock。第二个将调用真正的后端。

代码语言:javascript
复制
var LoginPage = require( './login_page' );

describe('As a user, when using valid credentials', function() {

    var login = new LoginPage();

    beforeEach(
        function () {

            browser.addMockModule('myService', function() {
                angular
                    .module('myService', ['myApp', 'ngMockE2E'])
                    .run(function($httpBackend) {

                        var access={"access_token":"a", "token_type":"bearer", "expires_in":299, "refresh_token":"a", "userName":"any", "clientId":"blah", ".issued":"Mon, 08 Jun 2015 20:47:40 GMT", ".expires":"Mon, 08 Jun 2015 20:52:40 GMT"};

                        $httpBackend.whenPOST("https://blah.com/OAuth2Server/1.0/OAuth/Token").respond(200, access);

                        $httpBackend.whenGET(/\/*/).passThrough();
                        $httpBackend.whenPOST().passThrough();

                    });
            });
        });


    it('logins successfully', function() {
            login
            .navigate()
            .login("anything", "password");

        browser.sleep(5000);
        browser.ignoreSynchronization=true;

        var currentUrl=browser.getCurrentUrl();
        expect(currentUrl).toBe("http://localhost:55555/#/my-jobs");

    });

});

describe('As a user, when using valid credentials', function() {

    var login = new LoginPage();

    beforeEach(
        function () {

            browser.addMockModule('myService', function() {
                angular
                    .module('myService', ['myApp', 'ngMockE2E'])
                    .run(function($httpBackend) {

                        var access={"access_token":"a", "token_type":"bearer", "expires_in":299, "refresh_token":"a", "userName":"any", "clientId":"blah", ".issued":"Mon, 08 Jun 2015 20:47:40 GMT", ".expires":"Mon, 08 Jun 2015 20:52:40 GMT"};

                        $httpBackend.whenPOST("https://blah.com/OAuth2Server/1.0/OAuth/Token").respond(200, access);

                        $httpBackend.whenGET(/\/*/).passThrough();
                        $httpBackend.whenPOST().passThrough();

                    });
            });
        });


    it('logins successfully', function() {
            login
            .navigate()
            .login("anything2", "password2");

        browser.sleep(5000);
        browser.ignoreSynchronization=true;

        var currentUrl=browser.getCurrentUrl();
        expect(currentUrl).toBe("http://localhost:55555/#/my-jobs");

    });

});
EN

回答 1

Stack Overflow用户

发布于 2017-02-09 16:53:07

我不知道为什么会发生这个问题(也发生在我身上),但我能够通过在每个描述的末尾重新启动浏览器来“修复”它。只是重新加载它对我来说不起作用。

在每个describe中添加以下内容:

代码语言:javascript
复制
afterAll(function() {
    // need this to avoid problems with ngmocke2e
    browser.restart();
});

我知道这不是一个理想的解决方案,而且它增加了一些额外的测试时间,但这就暂时解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31065846

复制
相关文章

相似问题

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