Improve this Doc View Source $controller

From Get docs
< Improve this Doc ngMock‎ | serviceAngularjs/docs/1.8/api/ngmock/service/$controller


Improve this Doc View Source $controller

  1. service in module ngMock

Overview

A decorator for $controller with additional bindings parameter, useful when testing controllers of directives that use bindToController.

// Directive definition ...

myMod.directive('myDirective', {
  controller: 'MyDirectiveController',
  bindToController: {
    name: '@'
  }
});


// Controller definition ...

myMod.controller('MyDirectiveController', ['$log', function($log) {
  this.log = function() {
    $log.info(this.name);
  };
}]);


// In a test ...

describe('myDirectiveController', function() {
  describe('log()', function() {
    it('should write the bound name to the log', inject(function($controller, $log) {
      var ctrl = $controller('MyDirectiveController', { /* no locals */ }, { name: 'Clark Kent' });
      ctrl.log();

      expect(ctrl.name).toEqual('Clark Kent');
      expect($log.info.logs).toEqual(['Clark Kent']);
    }));
  });
});

Usage

$controller(constructor, locals, [bindings]);

Arguments

Param Type Details
constructor function()string

If called with a function then it's considered to be the controller constructor function. Otherwise it's considered to be a string which is used to retrieve the controller constructor using the following steps:

  • check if a controller with given name is registered via $controllerProvider
  • check if evaluating the string on the current scope returns a constructor

    The string can use the controller as property syntax, where the controller instance is published as the specified property on the scope; the scope must be injected into locals param for this to work correctly.

locals Object Injection locals for Controller.

bindings

(optional)

Object Properties to add to the controller instance. This is used to simulate the bindToController feature and simplify certain kinds of tests.


Returns

Object Instance of given controller.


© 2010–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
https://code.angularjs.org/1.8.2/docs/api/ngMock/service/$controller