literate-jasmine
v0.1.2
Published
Write jasmine tests in markdown as documentation
Readme
literate-jasmine 
var PI;Mathematics
PI = 22/7;add can add numbers
var a = 1,
b = 2;
expect(a + b).toBe(3);can divide numbers
var a = 6,
b = 2;And a comment here doesn't break things:
expect(a/b).toBe(3);calculates the circumference of a circle
Note that we reference the variable PI below that is defined in the code block at the top of this describe (so right under "Mathematics").
var circumference = function(radius) {
return 2 * PI * radius;
};
expect(circumference(5)).toBe(2 * 22/7 * 5);Strings
appending works with +
var text = "abc";
expect(text + "d").toBe("abcd");Asynchronous
works with done
setTimeout(function() {
expect(true).toBe(true);
done();
}, 50);The file you are currently reading has a markdown structure (which includes the main header above and the other parts below) that is parsed into a tree:
- literate-jasmine
- Mathematices
- add can add numbers (level 3 header)
- add can add numbers
- calculates the circumference of a circle
- Strings
- appending works with +
- Asynchronous
- works with done
- Mathematices
Which is then uses the Jasmine describe, it and beforeEach to setup the
tests and then run them.
Note that there is a convention -- a hard rule that there will be a top header (top describe), one or more headers below that (describes) and one or more header below each of those (it blocks).*

This hard limitation makes sense:
- forces documentation to be simple
- nested describes indicate that extracted some code to helper functions is probably a sensible solution instead of adding more nesting
- easier to parse both as a human and as a computer
- keeps everything simple
literate-jasmine README.md

(If you're working on this project, run ./bin/literate-jasmine instead.)
Take a close look at how scope works for globals. In the Mathematics section below, we
reference PI to reset it as a beforeEach so every test has PI reset to the correct
value. The actual declaration of PI as a variable happens on the fourth line of this
README. The root describe treats any code blocks after it as global setup.

