Doc fixes. Really, markdown? Really?

This commit is contained in:
ragaskar 2009-03-01 05:47:02 -08:00
parent 2c8c3464b2
commit 9404716322
1 changed files with 69 additions and 51 deletions

View File

@ -55,7 +55,7 @@ Well, say you need to make a call that is asynchronous - an AJAX API, or some ot
Jasmine allows you to do this with `runs()` and `waits()` blocks. Jasmine allows you to do this with `runs()` and `waits()` blocks.
`runs()` blocks by themselves simply run as if they were called directly. The following snippets of code should provide similar results: `runs()` blocks by themselves simply run as if they were called directly. The following snippets of code should provide similar results:
it('should be a test', function () { it('should be a test', function () {
@ -65,7 +65,7 @@ Jasmine allows you to do this with `runs()` and `waits()` blocks.
expect(foo).toEqual(1); expect(foo).toEqual(1);
}); });
and and
it('should be a test', function () { it('should be a test', function () {
runs( function () { runs( function () {
@ -76,7 +76,7 @@ Jasmine allows you to do this with `runs()` and `waits()` blocks.
}); });
}); });
multiple `runs()` blocks in a spec will run serially. For example, multiple `runs()` blocks in a spec will run serially. For example,
it('should be a test', function () { it('should be a test', function () {
runs( function () { runs( function () {
@ -93,7 +93,7 @@ Jasmine allows you to do this with `runs()` and `waits()` blocks.
}); });
}); });
`runs()` blocks share functional scope -- `this` properties will be common to all blocks, but simple vars will not! `runs()` blocks share functional scope -- `this` properties will be common to all blocks, but simple `vars` will not!
it('should be a test', function () { it('should be a test', function () {
runs( function () { runs( function () {
@ -115,8 +115,8 @@ Jasmine allows you to do this with `runs()` and `waits()` blocks.
}); });
}); });
`runs()` blocks exist so you can test asynchronous processes. The function `waits()` works with `runs()` to provide a naive `runs()` blocks exist so you can test asynchronous processes. The function `waits()` works with `runs()` to provide a naive
timeout before the next block is run. You supply a time to wait before the next `runs()` function is executed. For example: timeout before the next block is run. You supply a time to wait before the next `runs()` function is executed. For example:
it('should be a test', function () { it('should be a test', function () {
runs(function () { runs(function () {
@ -205,17 +205,29 @@ There is a `Jasmine.Reporters` namespace for you to see how to handle reporting.
Jasmine has several matchers: Jasmine has several matchers:
`toEqual` compares objects or primitives and returns true if they are equal `toEqual` compares objects or primitives and returns true if they are equal
`toNotEqual` compares objects or primitives and returns true if they are not equal `toNotEqual` compares objects or primitives and returns true if they are not equal
`toMatch` takes a regex or a string and returns true if it matches `toMatch` takes a regex or a string and returns true if it matches
`toNotMatch` takes a regex or a string and returns true if it does not match `toNotMatch` takes a regex or a string and returns true if it does not match
`toBeDefined` returns true if the object or primitive is not `undefined` `toBeDefined` returns true if the object or primitive is not `undefined`
`toBeNull` returns true if the object or primitive is not `null` `toBeNull` returns true if the object or primitive is not `null`
`toBeTruthy` returns true if the object or primitive evaluates to true `toBeTruthy` returns true if the object or primitive evaluates to true
`toBeFalsy` returns true if the object or primitive evaluates to false `toBeFalsy` returns true if the object or primitive evaluates to false
`wasCalled` returns true if the object is a spy and was called `wasCalled` returns true if the object is a spy and was called
`wasNotCalled` returns true if the object is a spy and was not called `wasNotCalled` returns true if the object is a spy and was not called
`wasNotCalledWith` returns true if the object is a spy and was called with the passed arguments `wasNotCalledWith` returns true if the object is a spy and was called with the passed arguments
`toContain` returns true if an array or string contains the passed variable. `toContain` returns true if an array or string contains the passed variable.
`toNotContain` returns true if an array or string does not contain the passed variable. `toNotContain` returns true if an array or string does not contain the passed variable.
### Writing new Matchers ### Writing new Matchers
@ -237,79 +249,85 @@ suites may be disabled by calling `xdescribe()` instead of `describe()`
beforeEach takes a function that is run before each spec. For example: beforeEach takes a function that is run before each spec. For example:
describe('some suite', function () { describe('some suite', function () {
var suiteWideFoo; var suiteWideFoo;
beforeEach(function () { beforeEach(function () {
suiteWideFoo = 1; suiteWideFoo = 1;
} }
it('should equal bar', function () { it('should equal bar', function () {
expect(suiteWideFoo).toEqual(1); expect(suiteWideFoo).toEqual(1);
}; };
}); });
### afterEach ### afterEach
afterEach takes a function that is run after each spec. For example: afterEach takes a function that is run after each spec. For example:
describe('some suite', function () { describe('some suite', function () {
var suiteWideFoo; var suiteWideFoo;
afterEach(function () { afterEach(function () {
suiteWideFoo = 0; suiteWideFoo = 0;
} }
it('should equal 1', function () { it('should equal 1', function () {
expect(suiteWideFoo).toEqual(1); expect(suiteWideFoo).toEqual(1);
}; };
it('should equal 0 after', function () { it('should equal 0 after', function () {
expect(suiteWideFoo).toEqual(0); expect(suiteWideFoo).toEqual(0);
}; };
}); });
### Spies ### Spies
Jasmine integrates 'spies' that permit many spying, mocking, and faking behaviors. Jasmine integrates 'spies' that permit many spying, mocking, and faking behaviors.
Here is an few examples: Here are a few examples:
var Klass = function () { var Klass = function () {
} }
var Klass.prototype.method = function (arg) { var Klass.prototype.method = function (arg) {
return arg; return arg;
} }
var Klass.prototype.methodWithCallback = function (callback) { var Klass.prototype.methodWithCallback = function (callback) {
return callback('foo'); return callback('foo');
} }
... ...
it('should spy on Klass#method') { it('should spy on Klass#method') {
spyOn(Klass, 'method'); spyOn(Klass, 'method');
Klass.method('foo argument'); Klass.method('foo argument');
expect(Klass.method).wasCalledWith('foo argument'); expect(Klass.method).wasCalledWith('foo argument');
} });
it('should spy on Klass#methodWithCallback') { it('should spy on Klass#methodWithCallback') {
var callback = Jasmine.createSpy(); var callback = Jasmine.createSpy();
Klass.method(callback); Klass.method(callback);
expect(callback).wasCalledWith('foo'); expect(callback).wasCalledWith('foo');
} });
Many other options are available for spies: Many other options are available for spies:
`andCallThrough()`: spies on AND calls the original function spied on `andCallThrough()`: spies on AND calls the original function spied on
`andReturn()`: returns passed arguments when spy is called `andReturn()`: returns passed arguments when spy is called
`andThrow()`: throws passed exception when spy is called `andThrow()`: throws passed exception when spy is called
`andCallFake()`: calls passed function when spy is called `andCallFake()`: calls passed function when spy is called
`callCount`: returns number of times spy was called `callCount`: returns number of times spy was called
`mostRecentCall.args`: returns argument array from last call to spy. `mostRecentCall.args`: returns argument array from last call to spy.
`argsForCall[i]` returns arguments array for call `i` to spy. `argsForCall[i]` returns arguments array for call `i` to spy.
Spies are automatically removed after each spec. They may be set in the beforeEach function. Spies are automatically removed after each spec. They may be set in the beforeEach function.