jasmine-core 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/console/console.js +26 -2
  3. data/lib/jasmine-core.js +31 -23
  4. data/lib/jasmine-core/boot.js +1 -1
  5. data/lib/jasmine-core/boot/boot.js +1 -1
  6. data/lib/jasmine-core/example/node_example/spec/PlayerSpec.js +2 -2
  7. data/lib/jasmine-core/jasmine-html.js +16 -2
  8. data/lib/jasmine-core/jasmine.css +11 -10
  9. data/lib/jasmine-core/jasmine.js +709 -395
  10. data/lib/jasmine-core/json2.js +73 -62
  11. data/lib/jasmine-core/spec/console/ConsoleReporterSpec.js +39 -8
  12. data/lib/jasmine-core/spec/core/ClockSpec.js +19 -1
  13. data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +13 -0
  14. data/lib/jasmine-core/spec/core/EnvSpec.js +0 -63
  15. data/lib/jasmine-core/spec/core/ExpectationSpec.js +15 -53
  16. data/lib/jasmine-core/spec/core/JsApiReporterSpec.js +37 -0
  17. data/lib/jasmine-core/spec/core/MockDateSpec.js +1 -0
  18. data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +8 -2
  19. data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +91 -66
  20. data/lib/jasmine-core/spec/core/SpecSpec.js +25 -26
  21. data/lib/jasmine-core/spec/core/SpyRegistrySpec.js +55 -0
  22. data/lib/jasmine-core/spec/core/SpySpec.js +10 -0
  23. data/lib/jasmine-core/spec/core/SpyStrategySpec.js +13 -0
  24. data/lib/jasmine-core/spec/core/SuiteSpec.js +108 -10
  25. data/lib/jasmine-core/spec/core/integration/CustomMatchersSpec.js +34 -32
  26. data/lib/jasmine-core/spec/core/integration/EnvSpec.js +950 -35
  27. data/lib/jasmine-core/spec/core/integration/SpecRunningSpec.js +279 -3
  28. data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +10 -1
  29. data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +5 -5
  30. data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +30 -2
  31. data/lib/jasmine-core/spec/node_suite.js +195 -0
  32. data/lib/jasmine-core/spec/npmPackage/npmPackageSpec.js +104 -0
  33. data/lib/jasmine-core/version.rb +1 -1
  34. metadata +6 -3
@@ -14,7 +14,7 @@ describe("Spec", function() {
14
14
  expect(j$.Spec.isPendingSpecException(fakeError)).toBe(true);
15
15
  });
16
16
 
17
- it("#isPendingSpecException returns true for a pending spec exception", function() {
17
+ it("#isPendingSpecException returns false for not a pending spec exception", function() {
18
18
  var e = new Error("foo");
19
19
 
20
20
  expect(j$.Spec.isPendingSpecException(e)).toBe(false);
@@ -29,7 +29,7 @@ describe("Spec", function() {
29
29
  spec = new j$.Spec({
30
30
  description: 'my test',
31
31
  id: 'some-id',
32
- fn: function() {},
32
+ queueableFn: { fn: function() {} },
33
33
  queueRunnerFactory: fakeQueueRunner
34
34
  });
35
35
 
@@ -44,7 +44,7 @@ describe("Spec", function() {
44
44
  spec = new j$.Spec({
45
45
  id: 123,
46
46
  description: 'foo bar',
47
- fn: function() {},
47
+ queueableFn: { fn: function() {} },
48
48
  onStart: startCallback,
49
49
  queueRunnerFactory: fakeQueueRunner
50
50
  });
@@ -66,7 +66,7 @@ describe("Spec", function() {
66
66
  expect(beforesWereCalled).toBe(false);
67
67
  }),
68
68
  spec = new j$.Spec({
69
- fn: function() {},
69
+ queueableFn: { fn: function() {} },
70
70
  beforeFns: function() {
71
71
  return [function() {
72
72
  beforesWereCalled = true
@@ -85,25 +85,22 @@ describe("Spec", function() {
85
85
  var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
86
86
  before = jasmine.createSpy('before'),
87
87
  after = jasmine.createSpy('after'),
88
- fn = jasmine.createSpy('test body').and.callFake(function() {
88
+ queueableFn = { fn: jasmine.createSpy('test body').and.callFake(function() {
89
89
  expect(before).toHaveBeenCalled();
90
90
  expect(after).not.toHaveBeenCalled();
91
- }),
91
+ }) },
92
92
  spec = new j$.Spec({
93
- fn: fn,
94
- beforeFns: function() {
95
- return [before]
96
- },
97
- afterFns: function() {
98
- return [after]
93
+ queueableFn: queueableFn,
94
+ beforeAndAfterFns: function() {
95
+ return {befores: [before], afters: [after]}
99
96
  },
100
97
  queueRunnerFactory: fakeQueueRunner
101
98
  });
102
99
 
103
100
  spec.execute();
104
101
 
105
- var allSpecFns = fakeQueueRunner.calls.mostRecent().args[0].fns;
106
- expect(allSpecFns).toEqual([before, fn, after]);
102
+ var allSpecFns = fakeQueueRunner.calls.mostRecent().args[0].queueableFns;
103
+ expect(allSpecFns).toEqual([before, queueableFn, after]);
107
104
  });
108
105
 
109
106
  it("is marked pending if created without a function body", function() {
@@ -113,7 +110,7 @@ describe("Spec", function() {
113
110
  resultCallback = jasmine.createSpy('resultCallback'),
114
111
  spec = new j$.Spec({
115
112
  onStart: startCallback,
116
- fn: null,
113
+ queueableFn: { fn: null },
117
114
  resultCallback: resultCallback,
118
115
  queueRunnerFactory: fakeQueueRunner
119
116
  });
@@ -129,7 +126,7 @@ describe("Spec", function() {
129
126
  resultCallback = jasmine.createSpy('resultCallback'),
130
127
  spec = new j$.Spec({
131
128
  onStart:startCallback,
132
- fn: specBody,
129
+ queueableFn: { fn: specBody },
133
130
  resultCallback: resultCallback,
134
131
  queueRunnerFactory: fakeQueueRunner
135
132
  });
@@ -158,7 +155,8 @@ describe("Spec", function() {
158
155
  getSpecName: function() {
159
156
  return "a suite with a spec"
160
157
  },
161
- queueRunnerFactory: fakeQueueRunner
158
+ queueRunnerFactory: fakeQueueRunner,
159
+ queueableFn: { fn: null }
162
160
  });
163
161
 
164
162
  spec.pend();
@@ -183,7 +181,7 @@ describe("Spec", function() {
183
181
  it("should call the done callback on execution complete", function() {
184
182
  var done = jasmine.createSpy('done callback'),
185
183
  spec = new j$.Spec({
186
- fn: function() {},
184
+ queueableFn: { fn: function() {} },
187
185
  catchExceptions: function() { return false; },
188
186
  resultCallback: function() {},
189
187
  queueRunnerFactory: function(attrs) { attrs.onComplete(); }
@@ -194,19 +192,19 @@ describe("Spec", function() {
194
192
  expect(done).toHaveBeenCalled();
195
193
  });
196
194
 
197
- it("#status returns passing by default", function(){
198
- var spec = new j$.Spec({ fn: function () {} });
199
- expect(spec.status()).toBe("passed");
195
+ it("#status returns passing by default", function() {
196
+ var spec = new j$.Spec({queueableFn: { fn: jasmine.createSpy("spec body")} });
197
+ expect(spec.status()).toBe('passed');
200
198
  });
201
199
 
202
200
  it("#status returns passed if all expectations in the spec have passed", function() {
203
- var spec = new j$.Spec({fn: jasmine.createSpy("spec body")});
201
+ var spec = new j$.Spec({queueableFn: { fn: jasmine.createSpy("spec body")} });
204
202
  spec.addExpectationResult(true);
205
203
  expect(spec.status()).toBe('passed');
206
204
  });
207
205
 
208
206
  it("#status returns failed if any expectations in the spec have failed", function() {
209
- var spec = new j$.Spec({ fn: jasmine.createSpy("spec body") });
207
+ var spec = new j$.Spec({queueableFn: { fn: jasmine.createSpy("spec body") } });
210
208
  spec.addExpectationResult(true);
211
209
  spec.addExpectationResult(false);
212
210
  expect(spec.status()).toBe('failed');
@@ -215,7 +213,7 @@ describe("Spec", function() {
215
213
  it("keeps track of passed and failed expectations", function() {
216
214
  var resultCallback = jasmine.createSpy('resultCallback'),
217
215
  spec = new j$.Spec({
218
- fn: jasmine.createSpy("spec body"),
216
+ queueableFn: { fn: jasmine.createSpy("spec body") },
219
217
  expectationResultFactory: function (data) { return data; },
220
218
  queueRunnerFactory: function(attrs) { attrs.onComplete(); },
221
219
  resultCallback: resultCallback
@@ -233,7 +231,8 @@ describe("Spec", function() {
233
231
  var specNameSpy = jasmine.createSpy('specNameSpy').and.returnValue('expected val');
234
232
 
235
233
  var spec = new j$.Spec({
236
- getSpecName: specNameSpy
234
+ getSpecName: specNameSpy,
235
+ queueableFn: { fn: null }
237
236
  });
238
237
 
239
238
  expect(spec.getFullName()).toBe('expected val');
@@ -248,7 +247,7 @@ describe("Spec", function() {
248
247
  spec = new j$.Spec({
249
248
  description: 'my test',
250
249
  id: 'some-id',
251
- fn: function() { },
250
+ queueableFn: { fn: function() { } },
252
251
  queueRunnerFactory: fakeQueueRunner
253
252
  });
254
253
 
@@ -0,0 +1,55 @@
1
+ describe("SpyRegistry", function() {
2
+ describe("#spyOn", function() {
3
+ it("checks for the existence of the object", function() {
4
+ var spyRegistry = new j$.SpyRegistry();
5
+ expect(function() {
6
+ spyRegistry.spyOn(void 0, 'pants');
7
+ }).toThrowError(/could not find an object/);
8
+ });
9
+
10
+ it("checks for the existence of the method", function() {
11
+ var spyRegistry = new j$.SpyRegistry(),
12
+ subject = {};
13
+
14
+ expect(function() {
15
+ spyRegistry.spyOn(subject, 'pants');
16
+ }).toThrowError(/method does not exist/);
17
+ });
18
+
19
+ it("checks if it has already been spied upon", function() {
20
+ var spies = [],
21
+ spyRegistry = new j$.SpyRegistry({currentSpies: function() { return spies; }}),
22
+ subject = { spiedFunc: function() {} };
23
+
24
+ spyRegistry.spyOn(subject, 'spiedFunc');
25
+
26
+ expect(function() {
27
+ spyRegistry.spyOn(subject, 'spiedFunc');
28
+ }).toThrowError(/has already been spied upon/);
29
+ });
30
+
31
+ it("overrides the method on the object and returns the spy", function() {
32
+ var originalFunctionWasCalled = false,
33
+ spyRegistry = new j$.SpyRegistry(),
34
+ subject = { spiedFunc: function() { originalFunctionWasCalled = true; } };
35
+
36
+ var spy = spyRegistry.spyOn(subject, 'spiedFunc');
37
+
38
+ expect(subject.spiedFunc).toEqual(spy);
39
+ });
40
+ });
41
+
42
+ describe("#clearSpies", function() {
43
+ it("restores the original functions on the spied-upon objects", function() {
44
+ var spies = [],
45
+ spyRegistry = new j$.SpyRegistry({currentSpies: function() { return spies; }}),
46
+ originalFunction = function() {},
47
+ subject = { spiedFunc: originalFunction };
48
+
49
+ spyRegistry.spyOn(subject, 'spiedFunc');
50
+ spyRegistry.clearSpies();
51
+
52
+ expect(subject.spiedFunc).toBe(originalFunction);
53
+ });
54
+ });
55
+ });
@@ -47,6 +47,16 @@ describe('Spies', function () {
47
47
 
48
48
  expect(trackSpy.calls.mostRecent().args[0].object).toEqual(contextObject);
49
49
  });
50
+
51
+ it("tracks the return value of calls", function () {
52
+ var spy = j$.createSpy(TestClass.prototype, TestClass.prototype.someFunction);
53
+ var trackSpy = spyOn(spy.calls, "track");
54
+
55
+ spy.and.returnValue("return value");
56
+ spy();
57
+
58
+ expect(trackSpy.calls.mostRecent().args[0].returnValue).toEqual("return value");
59
+ });
50
60
  });
51
61
 
52
62
  describe("createSpyObj", function() {
@@ -46,6 +46,19 @@ describe("SpyStrategy", function() {
46
46
  expect(returnValue).toEqual(17);
47
47
  });
48
48
 
49
+ it("can return specified values in order specified when executed", function() {
50
+ var originalFn = jasmine.createSpy("original"),
51
+ spyStrategy = new j$.SpyStrategy({fn: originalFn});
52
+
53
+ spyStrategy.returnValues('value1', 'value2', 'value3');
54
+
55
+ expect(spyStrategy.exec()).toEqual('value1');
56
+ expect(spyStrategy.exec()).toEqual('value2');
57
+ expect(spyStrategy.exec()).toBe('value3');
58
+ expect(spyStrategy.exec()).toBeUndefined();
59
+ expect(originalFn).not.toHaveBeenCalled();
60
+ });
61
+
49
62
  it("allows an exception to be thrown when executed", function() {
50
63
  var originalFn = jasmine.createSpy("original"),
51
64
  spyStrategy = new j$.SpyStrategy({fn: originalFn});
@@ -52,6 +52,31 @@ describe("Suite", function() {
52
52
  expect(suite.beforeFns).toEqual([innerBefore, outerBefore]);
53
53
  });
54
54
 
55
+ it("runs beforeAll functions in order of needed execution", function() {
56
+ var env = new j$.Env(),
57
+ fakeQueueRunner = jasmine.createSpy('fake queue runner'),
58
+ suite = new j$.Suite({
59
+ env: env,
60
+ description: "I am a suite",
61
+ queueRunner: fakeQueueRunner
62
+ }),
63
+ firstBefore = jasmine.createSpy('outerBeforeAll'),
64
+ lastBefore = jasmine.createSpy('insideBeforeAll'),
65
+ fakeIt = {execute: jasmine.createSpy('it'), isExecutable: function() { return true; } };
66
+
67
+ suite.beforeAll(firstBefore);
68
+ suite.beforeAll(lastBefore);
69
+ suite.addChild(fakeIt);
70
+
71
+ suite.execute();
72
+ var suiteFns = fakeQueueRunner.calls.mostRecent().args[0].queueableFns;
73
+
74
+ suiteFns[0]();
75
+ expect(firstBefore).toHaveBeenCalled();
76
+ suiteFns[1]();
77
+ expect(lastBefore).toHaveBeenCalled();
78
+ });
79
+
55
80
  it("adds after functions in order of needed execution", function() {
56
81
  var env = new j$.Env(),
57
82
  suite = new j$.Suite({
@@ -67,6 +92,31 @@ describe("Suite", function() {
67
92
  expect(suite.afterFns).toEqual([innerAfter, outerAfter]);
68
93
  });
69
94
 
95
+ it("runs afterAll functions in order of needed execution", function() {
96
+ var env = new j$.Env(),
97
+ fakeQueueRunner = jasmine.createSpy('fake queue runner'),
98
+ suite = new j$.Suite({
99
+ env: env,
100
+ description: "I am a suite",
101
+ queueRunner: fakeQueueRunner
102
+ }),
103
+ firstAfter = jasmine.createSpy('outerAfterAll'),
104
+ lastAfter = jasmine.createSpy('insideAfterAll'),
105
+ fakeIt = {execute: jasmine.createSpy('it'), isExecutable: function() { return true; } };
106
+
107
+ suite.afterAll(firstAfter);
108
+ suite.afterAll(lastAfter);
109
+ suite.addChild(fakeIt);
110
+
111
+ suite.execute();
112
+ var suiteFns = fakeQueueRunner.calls.mostRecent().args[0].queueableFns;
113
+
114
+ suiteFns[1]();
115
+ expect(firstAfter).toHaveBeenCalled();
116
+ suiteFns[2]();
117
+ expect(lastAfter).toHaveBeenCalled();
118
+ });
119
+
70
120
  it("can be disabled, but still calls callbacks", function() {
71
121
  var env = new j$.Env(),
72
122
  fakeQueueRunner = jasmine.createSpy('fake queue runner'),
@@ -93,7 +143,7 @@ describe("Suite", function() {
93
143
  expect(onComplete).toHaveBeenCalled();
94
144
  });
95
145
 
96
- it("delegates execution of its specs and suites", function() {
146
+ it("delegates execution of its specs, suites, beforeAlls, and afterAlls", function() {
97
147
  var env = new j$.Env(),
98
148
  parentSuiteDone = jasmine.createSpy('parent suite done'),
99
149
  fakeQueueRunnerForParent = jasmine.createSpy('fake parent queue runner'),
@@ -109,22 +159,57 @@ describe("Suite", function() {
109
159
  queueRunner: fakeQueueRunner
110
160
  }),
111
161
  fakeSpec1 = {
112
- execute: jasmine.createSpy('fakeSpec1')
113
- };
162
+ execute: jasmine.createSpy('fakeSpec1'),
163
+ isExecutable: function() { return true; }
164
+ },
165
+ beforeAllFn = { fn: jasmine.createSpy('beforeAll') },
166
+ afterAllFn = { fn: jasmine.createSpy('afterAll') };
114
167
 
115
168
  spyOn(suite, "execute");
116
169
 
117
170
  parentSuite.addChild(fakeSpec1);
118
171
  parentSuite.addChild(suite);
172
+ parentSuite.beforeAll(beforeAllFn);
173
+ parentSuite.afterAll(afterAllFn);
119
174
 
120
175
  parentSuite.execute(parentSuiteDone);
121
176
 
122
- var parentSuiteFns = fakeQueueRunnerForParent.calls.mostRecent().args[0].fns;
177
+ var parentSuiteFns = fakeQueueRunnerForParent.calls.mostRecent().args[0].queueableFns;
123
178
 
124
- parentSuiteFns[0]();
179
+ parentSuiteFns[0].fn();
180
+ expect(beforeAllFn.fn).toHaveBeenCalled();
181
+ parentSuiteFns[1].fn();
125
182
  expect(fakeSpec1.execute).toHaveBeenCalled();
126
- parentSuiteFns[1]();
183
+ parentSuiteFns[2].fn();
127
184
  expect(suite.execute).toHaveBeenCalled();
185
+ parentSuiteFns[3].fn();
186
+ expect(afterAllFn.fn).toHaveBeenCalled();
187
+ });
188
+
189
+ it("does not run beforeAll or afterAll if there are no child specs to run", function() {
190
+ var env = new j$.Env(),
191
+ fakeQueueRunnerForParent = jasmine.createSpy('fake parent queue runner'),
192
+ fakeQueueRunnerForChild = jasmine.createSpy('fake child queue runner'),
193
+ parentSuite = new j$.Suite({
194
+ env: env,
195
+ description: "I am a suite",
196
+ queueRunner: fakeQueueRunnerForParent
197
+ }),
198
+ childSuite = new j$.Suite({
199
+ env: env,
200
+ description: "I am a suite",
201
+ queueRunner: fakeQueueRunnerForChild,
202
+ parentSuite: parentSuite
203
+ }),
204
+ beforeAllFn = jasmine.createSpy('beforeAll'),
205
+ afterAllFn = jasmine.createSpy('afterAll');
206
+
207
+ parentSuite.addChild(childSuite);
208
+ parentSuite.beforeAll(beforeAllFn);
209
+ parentSuite.afterAll(afterAllFn);
210
+
211
+ parentSuite.execute();
212
+ expect(fakeQueueRunnerForParent).toHaveBeenCalledWith(jasmine.objectContaining({queueableFns: []}));
128
213
  });
129
214
 
130
215
  it("calls a provided onStart callback when starting", function() {
@@ -138,7 +223,8 @@ describe("Suite", function() {
138
223
  queueRunner: fakeQueueRunner
139
224
  }),
140
225
  fakeSpec1 = {
141
- execute: jasmine.createSpy('fakeSpec1')
226
+ execute: jasmine.createSpy('fakeSpec1'),
227
+ isExecutable: function() { return true; }
142
228
  };
143
229
 
144
230
  suite.execute();
@@ -182,9 +268,10 @@ describe("Suite", function() {
182
268
 
183
269
  expect(suiteResultsCallback).toHaveBeenCalledWith({
184
270
  id: suite.id,
185
- status: '',
271
+ status: 'finished',
186
272
  description: "with a child suite",
187
- fullName: "with a child suite"
273
+ fullName: "with a child suite",
274
+ failedExpectations: []
188
275
  });
189
276
  });
190
277
 
@@ -210,7 +297,18 @@ describe("Suite", function() {
210
297
  id: suite.id,
211
298
  status: 'disabled',
212
299
  description: "with a child suite",
213
- fullName: "with a child suite"
300
+ fullName: "with a child suite",
301
+ failedExpectations: []
214
302
  });
215
303
  });
304
+
305
+ it('has a status of failed if any afterAll expectations have failed', function() {
306
+ var suite = new j$.Suite({
307
+ expectationResultFactory: function() { return 'hi'; }
308
+ });
309
+ suite.addChild({ result: { status: 'done' } });
310
+
311
+ suite.addExpectationResult(false);
312
+ expect(suite.status()).toBe('failed');
313
+ });
216
314
  });
@@ -38,13 +38,13 @@ describe("Custom Matchers (Integration)", function() {
38
38
  });
39
39
 
40
40
  it("passes the spec if the custom matcher passes", function(done) {
41
- env.addMatchers({
42
- toBeReal: function() {
43
- return { compare: function() { return { pass: true }; } };
44
- }
45
- });
46
-
47
41
  env.it("spec using custom matcher", function() {
42
+ env.addMatchers({
43
+ toBeReal: function() {
44
+ return { compare: function() { return { pass: true }; } };
45
+ }
46
+ });
47
+
48
48
  env.expect(true).toBeReal();
49
49
  });
50
50
 
@@ -57,16 +57,16 @@ describe("Custom Matchers (Integration)", function() {
57
57
  });
58
58
 
59
59
  it("uses the negative compare function for a negative comparison, if provided", function(done) {
60
- env.addMatchers({
61
- toBeReal: function() {
62
- return {
63
- compare: function() { return { pass: true }; },
64
- negativeCompare: function() { return { pass: true }; }
65
- };
66
- }
67
- });
68
-
69
60
  env.it("spec with custom negative comparison matcher", function() {
61
+ env.addMatchers({
62
+ toBeReal: function() {
63
+ return {
64
+ compare: function() { return { pass: true }; },
65
+ negativeCompare: function() { return { pass: true }; }
66
+ };
67
+ }
68
+ });
69
+
70
70
  env.expect(true).not.toBeReal();
71
71
  });
72
72
 
@@ -79,17 +79,17 @@ describe("Custom Matchers (Integration)", function() {
79
79
  });
80
80
 
81
81
  it("generates messages with the same rules as built in matchers absent a custom message", function(done) {
82
- env.addMatchers({
83
- toBeReal: function() {
84
- return {
85
- compare: function() {
86
- return { pass: false };
82
+ env.it('spec with an expectation', function() {
83
+ env.addMatchers({
84
+ toBeReal: function() {
85
+ return {
86
+ compare: function() {
87
+ return { pass: false };
88
+ }
87
89
  }
88
90
  }
89
- }
90
- });
91
+ });
91
92
 
92
- env.it('spec with an expectation', function() {
93
93
  env.expect("a").toBeReal();
94
94
  });
95
95
 
@@ -103,13 +103,14 @@ describe("Custom Matchers (Integration)", function() {
103
103
 
104
104
  it("passes the expected and actual arguments to the comparison function", function(done) {
105
105
  var argumentSpy = jasmine.createSpy("argument spy").and.returnValue({ pass: true });
106
- env.addMatchers({
107
- toBeReal: function() {
108
- return { compare: argumentSpy };
109
- }
110
- });
111
106
 
112
107
  env.it('spec with an expectation', function () {
108
+ env.addMatchers({
109
+ toBeReal: function() {
110
+ return { compare: argumentSpy };
111
+ }
112
+ });
113
+
113
114
  env.expect(true).toBeReal();
114
115
  env.expect(true).toBeReal("arg");
115
116
  env.expect(true).toBeReal("arg1", "arg2");
@@ -130,12 +131,13 @@ describe("Custom Matchers (Integration)", function() {
130
131
  argumentSpy = jasmine.createSpy("argument spy").and.returnValue(matcherFactory),
131
132
  customEqualityFn = function() { return true; };
132
133
 
133
- env.addCustomEqualityTester(customEqualityFn);
134
- env.addMatchers({
135
- toBeReal: argumentSpy
136
- });
137
134
 
138
135
  env.it("spec with expectation", function() {
136
+ env.addCustomEqualityTester(customEqualityFn);
137
+ env.addMatchers({
138
+ toBeReal: argumentSpy
139
+ });
140
+
139
141
  env.expect(true).toBeReal();
140
142
  });
141
143