From e12e584ca8db306dce8e0f4d3a212d77fbae966c Mon Sep 17 00:00:00 2001 From: JasonM23 Date: Fri, 16 Aug 2013 20:04:55 +1000 Subject: docs(mock.inject): document underscore wrapping syntax Add a summary describing the ignored underscore syntax sugar helper, with a simple use case example. Closes #3621 --- src/ngMock/angular-mocks.js | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 6764bf17..b41956d5 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1892,8 +1892,40 @@ angular.mock.clearDataCache = function() { * instance of {@link AUTO.$injector $injector} per test, which is then used for * resolving references. * - * See also {@link angular.mock.module module} * + * ## Resolving References (Underscore Wrapping) + * Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this + * in multiple `it()` clauses. To be able to do this we must assign the reference to a variable + * that is declared in the scope of the `describe()` block. Since we would, most likely, want + * the variable to have the same name of the reference we have a problem, since the parameter + * to the `inject()` function would hide the outer variable. + * + * To help with this, the injected parameters can, optionally, beenclosing with underscores. + * These are ignored by the injector when the reference name is resolved. + * + * For example, the parameter `_myService_` would be resolved as the reference `myService`. + * Since it is available in the function body as _myService_, we can then assign it to a variable + * defined in an outer scope. + * + * ``` + * // Defined out reference variable outside + * var myService; + * + * // Wrap the parameter in underscores + * beforeEach( inject( function(_myService_){ + * myService = _myService_; + * })); + * + * // Use myService in a series of tests. + * it('makes use of myService', function() { + * myService.doStuff(); + * }); + * + * ``` + * + * See also {@link angular.mock.module angular.mock.module} + * + * ## Example * Example of what a typical jasmine tests looks like with the inject method. *
    *
@@ -1930,7 +1962,7 @@ angular.mock.clearDataCache = function() {
    *   });
    *
    * 
- * + * * @param {...Function} fns any number of functions which will be injected using the injector. */ window.inject = angular.mock.inject = function() { -- cgit v1.2.3