使用量角器测试角度控制器

时间:2014-05-08 09:30:50

标签: unit-testing protractor

这是我的代码示例:

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

任何可以提供此帮助的人?

感谢!!!

1 个答案:

答案 0 :(得分:7)

量角器测试是端到端测试,其中NodeJS执行连接到浏览器的测试,并像使用numan那样使用它。

在这样的量角器测试中,您正在尝试使用angularJS API和模块对控制器进行单元测试。这没有多大意义。

单元测试通常由Karma在浏览器内执行,端到端量角器测试通常使用NodeJS内的量角器执行。你不应该在同一个文件中进行单元测试和量角器测试。