这是我的代码示例:
describe('myCtrl functionality', function() {
var driver;
var ptor;
beforeEach(function() {
ptor = protractor.getInstance();
ptor.ignoreSynchronization = true;
browser.ignoreSynchronization = false;
driver = ptor.driver;
});
it('should login', function() {
driver.get('someurl');
driver.findElement(protractor.By.name('username')).sendKeys('admin');
driver.findElement(protractor.By.name('password')).sendKeys('admin');
driver.findElement(protractor.By.css('button[type="submit"]')).click();
});
describe('myCtrl testing', function() {
var $scope;
beforeEach(module('myApp'));
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new();
$controller('dashStoresCtrl', {$scope: $scope});
}));
it('should create "stores" model', function() {
var containerStores = element(by.css('.dashboardStores'));
containerStores.findElements(by.css('.store-item-holder')).then(function(elems) {
expect(elems.length).toEqual($scope.stores.length);
});
});
});
});
问题是当我运行测试时我得到TypeError:对象不是函数。
那是beforeEach(module('myApp'));
行
我做了研究,发现我需要在我的项目和index.html中包含angular-mocks.js文件。
我做到了,但仍然得到TypeError: object is not a function
。
任何可以提供此帮助的人?
感谢!!!
答案 0 :(得分:7)
量角器测试是端到端测试,其中NodeJS执行连接到浏览器的测试,并像使用numan那样使用它。
在这样的量角器测试中,您正在尝试使用angularJS API和模块对控制器进行单元测试。这没有多大意义。
单元测试通常由Karma在浏览器内执行,端到端量角器测试通常使用NodeJS内的量角器执行。你不应该在同一个文件中进行单元测试和量角器测试。