An overview about testing and Jasmine
by Igor Lima @ Avenue Code
ilima@avenuecode.com
Jan 23rd, 2014
Agenda
-
Test First
- TDD
- Jasmine
- describe
- it
- expect
- matcher
- jasmine-node
-
Plunker
- A challenge
______________________________________________
An overview about testing and Jasmine
Prerequisites
JavaScript beginner
or any other level
if you know already how to code a simple line using JavaScript,
feel free to join...
______________________________________________
An overview about testing and Jasmine
Test First
Each time you start writing a new class,
a new module,
or just a new piece of logic,
ask yourself:
How can I test this?
______________________________________________
An overview about testing and Jasmine
How can I test this?
The answer to this question will help you to code much more efficiently, create better APIs, and put everything into nicely separated blocks.
You can't write tests for spaghetti code.
______________________________________________
An overview about testing and Jasmine
TDD
in my own words
it's a way for improving the code design by testing.
a formal definition
write tests before code following a small iteration:
red, green, refactor cycle.
______________________________________________
An overview about testing and Jasmine
Jasmine 1.3.1
A framework for testing JavaScript code
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
______________________________________________
An overview about testing and Jasmine
Describe
A test suite that contains one or more specs.
It might also have other test suites.
______________________________________________
An overview about testing and Jasmine
It
A spec that contains one or more expectations.
______________________________________________
An overview about testing and Jasmine
Expect
An expectation between the actual and the expected value.
It's basically a boolean comparison between two values.
Each expectation will be responsible for reporting true or false.
Then we'll be able to see a passed or failed spec.
______________________________________________
An overview about testing and Jasmine
Matcher
It's located between the
actual and the
expected
value.
Examples:
- toEqual
- toBe
- toMatch
- toBeDefined
- toBeUndefined
- toBeNull
- toBeTruthy
- toBeFalsy
- toContain
- toBeLessThan
- toBeGreaterThan
- toThrow
Any matcher can evaluate to a negative assertion by chaining the call to expect with a not before calling the matcher.
______________________________________________
An overview about testing and Jasmine
jasmine-node
A NodeJS module that makes the wonderful Jasmine framework available in NodeJS.
______________________________________________
An overview about testing and Jasmine
Install jasmine-node
$
npm install jasmine-node -g
______________________________________________
An overview about testing and Jasmine
An example
It's based from the jasmine documentation.
Keep the documentation in mind.
Any question?
Please go there first.
______________________________________________
An overview about testing and Jasmine
my-code.spec.js
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
______________________________________________
An overview about testing and Jasmine
Run jasmine-node
$ jasmine-node my-code.spec.js --color --autotest --watch ./
______________________________________________
An overview about testing and Jasmine
my-code.js
jasmine-node should be running...
exports.MyObject = {
};
______________________________________________
An overview about testing and Jasmine
Enhancing our spec
jasmine-node should be running...
describe("My new object", function() {
var MyObject = require('./my-code.js').MyObject;
it("should have a property named 'foo'", function() {
expect(MyObject.foo).toBeDefined();
});
});
test should FAIL
______________________________________________
An overview about testing and Jasmine
Enhancing our code
jasmine-node should be running...
exports.MyObject = {
foo: {}
};
test should PASS
______________________________________________
An overview about testing and Jasmine
Plunker
An online community for
creating,
collaborating on
and sharing
your web development ideas.
It's amazing!!!
Love it!!!!
______________________________________________
An overview about testing and Jasmine
Our Jasmine Tests on Plunker
Go to:
There is no excuse.
You can develop your idea online and on real time, keeping in mind doing the test first.
Isn't it amazing? I know it is!!!
______________________________________________
An overview about testing and Jasmine
Conclusion
Keep in mind "Test First".
Using Jasmine is a way to do that.
Just keep it in mind.
______________________________________________
An overview about testing and Jasmine
Learn more
go futher with the reference links
Official site - pivotal.github.io/jasmine
Jasmine-node - github.com/mhevery/jasmine-node
Plunker - plnkr.co
______________________________________________
An overview about testing and Jasmine
A challenge
"My Calculator"
"sum 2 + 2 SHOULD be 4"
"sum 2 + 2 + 3 + 1 SHOULD be 8"
"subtraction between 2 and 2 SHOULD be 0"
"subtraction between 3 and 4 SHOULD be -1"
"multiplication between 3 and 2 SHOULD be 6"
"multiplication between 3, 2 and 4 SHOULD be 24"
"division between 2 and 2 SHOULD be 1"
"division between 6 and 2 SHOULD be 3"
That's it
______________________________________________
An overview about testing and Jasmine
Thanks
Thanks for your time.
Hope it might be helpful for you all.
Thanks again!!!
______________________________________________
An overview about testing and Jasmine
An overview about testing and Jasmine
By Avenue Code
An overview about testing and Jasmine
"An overview how we can improve our code design by testing with Jasmine framework". By Igor Lima
- 3,646