gpt4 book ai didi

angularjs - 使用 Protractor 对 AngularJS Controller 进行单元测试

转载 作者:行者123 更新时间:2023-12-03 12:21:44 28 4
gpt4 key购买 nike

我有一个功能完美的应用程序运行 Electron , 和 Protractor做测试。我能够对 DOM 元素进行测试,但我无法找到一种方法来测试我在 Controller 中拥有的功能。我收到此错误消息

Failures:

1) app-controller.js encountered a declaration exception
Message:
ReferenceError: window is not defined
Stacktrace:
ReferenceError: window is not defined
at Object. (/home/yann/workspace/hacker-keyboard/node_modules/angular/angular.js:28902:4)
at require (module.js:384:17)
at Object. (/home/yann/workspace/hacker-keyboard/node_modules/angular/index.js:1:63)



看了很多帖子, AngularJS documentation ,但我还没有找到解决我的问题的方法。
以下是我用于测试的文件:

app.js
var app = angular.module('app', [
'appController'
]);

var controllerModule = angular.module('appController', []);

应用 Controller .js
controllerModule.controller('appController', ['$scope',
'$timeout',
'$window',
'$interval',
'$filter',
function ($scope, $timeout, $window, $interval, $filter){
/* controller code here */
}]);

conf.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['test-spec.js'],
capabilities: {
browserName: "chrome",
chromeOptions: {
binary: "./dist/myApp-linux-x64/myApp"
}
},
onPrepare: function () {
browser.resetUrl = "file://";
}
};

测试规范.js
describe('app-controller.js', function () {
require('angular');
require('angular-mocks');

var scope, controller;

beforeEach(function () {
module('app');
});

beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
controller = $controller("appController", {
$scope: scope
});
}));

it('should return empty string',
function () {
var result = scope.fooFunction(12, 'blue');
expect(result).toEqual("");
});
});

你们知道我错过/误解了什么吗?

编辑
因为我不在 Angular 文件中,所以我无权访问 window目的。 angular的要求|和 angular-mocks导致错误,因为它无法访问 window目的。有谁知道我如何将它链接到我的 测试规范.js 文件?

最佳答案

我看到错误

ReferenceError: window is not defined



这个注入(inject)可能有问题?

我给你我的工作配置文件。我使用框架 Jasmine。
exports.config = {
allScriptsTimeout: 55000,
specs: ['e2e/*-spec.js'],
framework: 'jasmine2',
baseUrl: /*<baseUrl>*/"http://url.com"/*</baseUrl>*/ ,
onPrepare: function() {
var TeamCityReporter = require('jasmine-reporters').TeamCityReporter;
jasmine.getEnv().addReporter(new TeamCityReporter());
var disableNgAnimate = function() {
angular.module('disableNgAnimate', []).run(['$animate', function($animate) {
$animate.enabled(false);
var style = ".ngdialog-content,.ngdialog-overlay,.ngdialog-closing .ngdialog-content,.ngdialog-closing .ngdialog-overlay { animation-duration: 0ms!important;}";
$("<style>" + style + "</style>").appendTo("head");
}]);
};
browser.addMockModule('disableNgAnimate', disableNgAnimate);

// Store the name of the browser that's currently being used.
browser.getCapabilities().then(function(caps) {
browser.params.browser = caps.get('browserName');
});
},

};

关于angularjs - 使用 Protractor 对 AngularJS Controller 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33654783/

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