angularjs – 如何在Jasmine / Protractor中模拟angular.module(
我正在尝试使用Protractor的addMockModule()来模拟一个简单的AngularJS模块并覆盖一个变量:
这是我的HTML: <body ng-app="myApp"> <div ng-controller="myAppController"> Overriden module value <b>{{myValue}}</b> </div> <script src="/Scripts/Lib/angular/angular.js"></script> <script src="/module.js"></script> <script src="/controller.js"></script> </body> 这是我的控制器: var myApp = angular.module("myApp",['myModule']); myApp.controller("myAppController",function ($scope,myValue) { $scope.myValue = myValue; }); 这是我的模块: var newModule = angular.module('myModule',[]); newModule.value('myValue',"oldValue"); 这是我的Jasmine / Protractor代码: var mockMyModule = function () { var newModule = angular.module('myModule',[]); newModule.value('myValue',"newMockedValue"); }; it('should override services via mock modules',function () { ptor = protractor.getInstance(); ptor.ignoreSynchronization = true; browser.addMockModule('portfolioDataAccessMod',mockMyModule); browser.get('http://localhost:57627/page1.html'); expect(element(by.binding("myValue")).getText()).toBe("newMockedValue"); }); 结果: 失败:
怎么了 ? 到目前为止我找到的所有示例都是覆盖HTTP调用,但我想要的只是用一个简单的变量来模拟一个非常简单的模块.在Protractor中可以做到吗? 解决方法
根据Juliemr在这篇文章中的说法:
https://github.com/angular/protractor/issues/509
将mockedValue声明放在it()中并启用角度同步 it('should override services via mock modules',function () { ptor = protractor.getInstance(); // When ignoreSynchronization is true mocking doesn't work ptor.ignoreSynchronization = false; browser.addMockModule('myModule',function () { var module = angular.module('myModule').config(['$provide',function ($provide) { $provide.constant('myValue','newMockedValue'); }]) }); browser.get('http://localhost:57627/page1.html'); expect(element(by.binding("myValue")).getText()).toBe("newMockedValue"); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |