我终于设法完成了一个非常简单的端到端测试,即
在 scenarios.js:
中describe('My app', function () {
beforeEach(function () {
browser().navigateTo('/');
});
describe('On Load', function () {
it('Textbox should be blank', function () {
expect(input('textbox').val()).toBe('');
});
});
});
我的 runner.html 看起来像这样:
<head>
<title>End2end Test Runner</title>
<script src="/js/libs/angular-scenario.js" ng-autotest></script>
<script src="/js/libs/angular-mocks.js"></script>
<script src="/js/test/e2e/scenarios.js"></script>
</head>
这会启动我的网站,导航并检查输入是否为空白。王牌。
然而我现在想添加一个测试,扩展到目前为止的测试:
describe('Click on Add', function () {
it('will add new item if valid', function () {
input('newItemName').enter('Test Item');
element('#add').click();
expect(input('newItemName').val()).toBe('');
expect(repeater('#items li').count()).toEqual(1);
});
});
但在我运行此测试之前,我想模拟我的应用依赖的存储服务。
以下是控制器定义:
myapp.controller('MyController', ['$scope', '$routeParams', '$filter', 'storage',
function ($scope, $routeParams, $filter, storage) {
. . . .
}
]);
这导致了我的问题(我认为),因为我想做这样的事情:
describe('Controller Unit Tests', function(){
var ctrl;
beforeEach(function(){
ctrl = new MyController();
});
it('should ....', function() {
expect(true).toBe(true);
});
});
但不能因为我宣布我的控制器的方式。而我以这种方式宣布我的控制器的原因是为了缩小目的......
有没有人就如何解决这个问题提出建议?!
答案 0 :(得分:3)
尝试
function MyController($scope, $routeParams, $filter, storage) {}
MyCtrl1.$inject = ['$scope', '$routeParams', '$filter', 'storage'];