SashaBG
SashaBG

Reputation: 31

Test Angular controller with Protractor

This is example of my code:

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);
      });

    });
  });
});

And the problem is when i run tests i get TypeError: object is not a function. That is for the line beforeEach(module('myApp')); I made research and find out that i need to include angular-mocks.js file in my project and in index.html. I did it but still get TypeError: object is not a function.

Anyone who can help with this?

Thanks!!!

Upvotes: 1

Views: 2896

Answers (1)

JB Nizet
JB Nizet

Reputation: 691685

Protractor tests are end-to-end tests, where NodeJS executes tests that connect to your browser and use it like a numan being would do.

You're trying, in such a protractor test, to use the angularJS API and modules to unit-test a controller. That doesn't make much sense.

Unit tests are typically executed by Karma, inside your browser, and end-to-end protractor tests are typically executed using protractor, inside NodeJS. You shouldn't have a unit test and a protractor test in the same file.

Upvotes: 7

Related Questions