aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWes Alvaro2014-02-03 16:53:52 -0800
committerIgor Minar2014-02-03 22:25:30 -0800
commit3bf43903397c703aa2e9ba1e1a48dbc9e8286ee2 (patch)
treeee0bf903169930a4a17ed4e1c633cf7ae21eb251
parente7ac7aa43b88932a08140c2dabb8000e285f06d7 (diff)
downloadangular.js-3bf43903397c703aa2e9ba1e1a48dbc9e8286ee2.tar.bz2
fix(mocks): always call functions injected with `inject` with `this` set to the current spec
Currently when a function is injected inside of a test we set the context to undefined which is a bug. Closes #6102
-rw-r--r--src/ngMock/angular-mocks.js2
-rw-r--r--test/ngMock/angular-mocksSpec.js19
2 files changed, 20 insertions, 1 deletions
diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js
index 19f0ac9d..0058a8ec 100644
--- a/src/ngMock/angular-mocks.js
+++ b/src/ngMock/angular-mocks.js
@@ -2125,7 +2125,7 @@ if(window.jasmine || window.mocha) {
window.inject = angular.mock.inject = function() {
var blockFns = Array.prototype.slice.call(arguments, 0);
var errorForStack = new Error('Declaration Location');
- return isSpecRunning() ? workFn() : workFn;
+ return isSpecRunning() ? workFn.call(currentSpec) : workFn;
/////////////////////
function workFn() {
var modules = currentSpec.$modules || [];
diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js
index fb602adc..e5f67a7e 100644
--- a/test/ngMock/angular-mocksSpec.js
+++ b/test/ngMock/angular-mocksSpec.js
@@ -864,6 +864,25 @@ describe('ngMock', function() {
});
+ describe('this', function() {
+
+ it('should set `this` to be the jasmine context', inject(function() {
+ expect(this instanceof jasmine.Spec).toBe(true);
+ }));
+
+ it('should set `this` to be the jasmine context when inlined in a test', function() {
+ var tested = false;
+
+ inject(function() {
+ expect(this instanceof jasmine.Spec).toBe(true);
+ tested = true;
+ });
+
+ expect(tested).toBe(true);
+ });
+ });
+
+
// We don't run the following tests on IE8.
// IE8 throws "Object does not support this property or method." error,
// when thrown from a function defined on window (which `inject` is).