gpt4 book ai didi

javascript - 如何使用 Protractor 模拟 Angular 服务?

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:09 26 4
gpt4 key购买 nike

我有一些用 Protractor 编写的 e2e 测试。我的一些测试执行的内容会导致显示警报(uib-alert)。测试运行良好,可以找到并验证警报,但如果我使用 uib-alert 中的“dismiss-on-timeout”标签,则测试会失败,因为 Protractor 在执行断言之前会等待超时。

问题:https://github.com/angular-ui/bootstrap/pull/2798https://github.com/angular/protractor/issues/169

因此,我想在运行 Protractor 时创建没有超时关闭标签的警报。

我的警报是由这样的服务创建的:

angular.module('MyApp').factory("AlertService", function (...

如何在 Protractor 上覆盖此设置?我正在尝试使用 browser.addMockModule('AlertService', mock) 但这不起作用...

最佳答案

我通过将 AlertService 提取到一个全新的模块然后模拟它来实现它。我猜 Protractor 不能模拟模块内的单个服务,只能模拟整个服务。

编辑:我创建了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);
}

关于javascript - 如何使用 Protractor 模拟 Angular 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39884350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com