量角器5.1.2 - addMockModule不返回任何输出(而不是注入模块)

时间:2017-08-31 11:05:23

标签: angularjs testing ionic-framework protractor integration-testing

我正在研究使用Angular 1.x +编写的Ionic v1应用程序的E2E测试,其中包含面向组件的模式(Webpack + ES6)。

我试图通过browser.addMockModule函数添加模拟模块,但没有成功。 我已经尝试了所有方法,包括在browser.get之前添加模拟等。

这是一个简单的测试(在onPrepare函数中,但它在早期阶段的特定测试BeforeAll中,具有相同的结果):

   browser.addMockModule('myMockModule', () => {
            console.log("mock is being executed");
            return;
        });

        browser.pause();
        browser.driver.get('http://localhost:8100');

我试图实现的实际代码应该是我的应用程序的现有模块。

   console.log('beforeAll --> proof-of-delivery');
    browser.addMockModule('myOverridenModule', () => {

        console.log('beforeAll -->addMockModule proof-of-delivery');

        angular.module('myOverridenModule', ['ui.router'])
        .run( ($state, $rootScope) => {     

            console.log('myOverridenModule override');

            $rootScope.$on('$stateChangeStart', (event, toState) => {
                console.log('toState test ', toState);
              });

        });
    }); 

    browser.pause();
    browser.driver.get('http://localhost:8100');

有什么可能出错的建议吗?另外,我已经检查了实际的 Chrome控制台日志和终端版本。模块中没有任何日志(但我可以在调用函数之前立即看到日志)。

感谢您在解决此类问题时提供的任何帮助。我的压力将会很感激。

1 个答案:

答案 0 :(得分:0)

在我看来,您的问题是您正在使用

browser.driver.get('http://localhost:8100');

这是包装的浏览器实例,而不是量角器浏览器实例,因此定义的任何模拟模块都将被忽略。

如果您使用

browser.get('http://localhost:8100');

您的mockModule应该执行。