javascriptmockingprotractore2e-testingangularjs-1.7

Protractor: mock angularjs attribute


I have a common module that does contain noDoubleClick attribute, that I'm using to prevent form buttons to be clicked twice accidentally.

(function () {
  function NoDoubleClickDirective() {
    return {
      restrict: 'A',
      link(scope, elem) {
        let clicked = false;
        elem.on('click', (e) => {
          if (clicked) {
            e.preventDefault();
          } else {
            clicked = true;
            setTimeout(() => {
              clicked = false;
            }, 3000);
          }
        });
      },
    };
  }

  angular
    .module('my.common')
    .directive('noDoubleClick', NoDoubleClickDirective);
}());

But I do not want this feature while running tests with protractor. Is there anyway do disable the attribute?

I've tried like it so, but it does not work

onPrepare() {
    browser.addMockModule('my.common', function() {
      angular
        .module('my.common')
        .directive('noDoubleClick', () => {});
    });
}

Solution

  • In order to make it work I had to put attribute in sub-module

    browser.addMockModule('my.common.no-double-click', function() {
      angular
        .module('my.common.no-double-click', [])
        .directive('noDoubleClick', () => {});
    });