我正在研究使用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控制台日志和终端版本。模块中没有任何日志(但我可以在调用函数之前立即看到日志)。
感谢您在解决此类问题时提供的任何帮助。我的压力将会很感激。
答案 0 :(得分:0)
在我看来,您的问题是您正在使用
browser.driver.get('http://localhost:8100');
这是包装的浏览器实例,而不是量角器浏览器实例,因此定义的任何模拟模块都将被忽略。
如果您使用
browser.get('http://localhost:8100');
您的mockModule应该执行。