我正在角应用程序中的控制器上运行单元测试。到目前为止我的测试是:
describe('Controller', function () {
var scope, ctrl;
beforeEach(module('myApp'));
beforeEach(inject(function ($rootScope,
$controller) {
scope = $rootScope.$new();
ctrl = $controller('Controller', {
$scope: scope
});
}));
beforeEach(browser().navigateTo('/'));
it('should get you to the next page', function () {
scope.submit();
expect(browser().location().path()).toBe('/new')
});
});
带控制器
var Controller = function ($scope, $location) {
$scope.submit = function () {
$location.path('/new');
}
}
但是,当我运行此操作时,我收到错误browser is not defined
。这里发生了什么?这不是由Angular提供的吗?
编辑:更奇怪的是,我收到inject
未定义的错误。
这是配置文件:
basePath = '../';
framework = ["ng-scenario"];
files = [
ANGULAR_SCENARIO,
ANGULAR_SCENARIO_ADAPTER,
'http://code.jquery.com/jquery-1.9.1.min.js',
'https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js',
'../static/javascript/angular-mocks.js',
'../static/javascript/angular-scenario.js',
'../static/javascript/stripe.js',
'templates/static/avgrund.jquery.js',
'templates/static/chosen.jquery.js',
'templates/static/app.js',
'tests/E2E/tests.js'
];
urlRoot = '/_karma_/';
singleRun = true;
browsers = ['Chrome'];
junitReporter = {
outputFile: 'test-output.xml',
suite: 'e2e'
};
答案 0 :(得分:0)
我修好了。我添加了行
proxies = {
'/static/': 'http://localhost:5000/static/'
}
以及其他您需要的路径。
答案 1 :(得分:0)
是。必须使用http或https运行场景运行器。 或者您可以在单独的html中运行e2e,格式如下:
<html lang="en">
<head>
<title>End2end Test Runner</title>
<meta charset="utf-8">
<base href="../..">
<script src="app/lib/angular/angular-scenario.js" ng-autotest></script>
<script src="test/e2e/scenarios.js"></script>
</head>
<body>
</body>
</html>
注意,您必须引用此文件“angular-scenario.js”