我有一些用Protractor编写的e2e测试。 我的一些测试会执行导致警报显示的内容(uib-alert)。 测试运行正常,可以查找并验证警报,但如果我使用uib-alert标记dismiss-on-timeout,则测试失败,因为量角器在执行断言之前等待超时。
问题:https://github.com/angular-ui/bootstrap/pull/2798和https://github.com/angular/protractor/issues/169
因此,我想在运行量角器时创建没有dismiss-on-timeout标记的警报。
我的提醒是由这样的服务创建的:
angular.module('MyApp').factory("AlertService", function (...
如何在量角器上覆盖它?我正在尝试使用browser.addMockModule(' AlertService',mock),但这不起作用......
答案 0 :(得分:1)
我是通过将AlertService提取到一个全新的模块然后模拟它来实现的。 我猜测量器不能模拟模块中的单个服务,只能模拟整个事件。
编辑: 我创建了alert.module.js:
angular.module('MyApp.alert', []);
angular.module('MyApp.alert').factory("AlertService", function($rootScope) {
...
他们,在protractor.conf.js:
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: [],
capabilities: {
browserName: 'phantomjs',
'phantomjs.binary.path': require('phantomjs-prebuilt').path
},
onPrepare: function() {
...
function mockAlertService(){
var alertMock = function() {
angular.module('MyApp.alert', []);
angular.module('MyApp.alert').factory("AlertService", function($rootScope) {
...
}
browser.addMockModule('MyApp.alert', alertMock);
}