up
This commit is contained in:
parent
4ae129054e
commit
ab9ab64bd5
476 changed files with 3370 additions and 532 deletions
|
@ -0,0 +1,50 @@
|
|||
The test demonstrates one of temptations a developer meets when writing tests.
|
||||
|
||||
What we have here is actually 3 tests, but layed out as a single function with 3 asserts.
|
||||
|
||||
Sometimes it's easier to write this way, but if an error occurs, it's much less obvious what went wrong.
|
||||
|
||||
If an error happens inside a complex execution flow, then we'll have to figure out the data at that point. We'll actually have to *debug the test*.
|
||||
|
||||
It would be much better to break the test into multiple `it` blocks with clearly written inputs and outputs.
|
||||
|
||||
Like this:
|
||||
```js
|
||||
describe("Raises x to power n", function() {
|
||||
it("5 in the power of 1 equals 5", function() {
|
||||
assert.equal(pow(5, 1), 5);
|
||||
});
|
||||
|
||||
it("5 in the power of 2 equals 25", function() {
|
||||
assert.equal(pow(5, 2), 25);
|
||||
});
|
||||
|
||||
it("5 in the power of 3 equals 125", function() {
|
||||
assert.equal(pow(5, 3), 125);
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
We replaced the single `it` with `describe` and a group of `it` blocks. Now if something fails we would see clearly what the data was.
|
||||
|
||||
Also we can isolate a single test and run it in standalone mode by writing `it.only` instead of `it`:
|
||||
|
||||
|
||||
```js
|
||||
describe("Raises x to power n", function() {
|
||||
it("5 in the power of 1 equals 5", function() {
|
||||
assert.equal(pow(5, 1), 5);
|
||||
});
|
||||
|
||||
*!*
|
||||
// Mocha will run only this block
|
||||
it.only("5 in the power of 2 equals 25", function() {
|
||||
assert.equal(pow(5, 2), 25);
|
||||
});
|
||||
*/!*
|
||||
|
||||
it("5 in the power of 3 equals 125", function() {
|
||||
assert.equal(pow(5, 3), 125);
|
||||
});
|
||||
});
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue