Mocha, chai and sinon
-
Upload
andrew-dixon -
Category
Engineering
-
view
94 -
download
2
Transcript of Mocha, chai and sinon
![Page 2: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/2.jpg)
@adstage
Senior So(ware Engineer at AdStage Has been launching companies since the last millennium. Worked on everything from the Linux Kernel to AmbiBous SPAs with Ember.
Andrew Dixon
RAISEDAdStage All-‐In-‐One Ad PlaHorm Build, deploy & manage ad campaigns across Google, Bing, Facebook, TwiOer & LinkedIn.
@adstage
![Page 3: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/3.jpg)
“The only thing we know about the future is that it will be different.”
-‐ Peter Drucker
@adstage
![Page 4: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/4.jpg)
Cassandra
Rails
Postgres
![Page 5: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/5.jpg)
Pros
* Stable -‐ first release in 2008
* Large Community
* IntegraBons
Cons
* Syntax
* ConfiguraBon (e.g. asserBon libraries)
* Asynchronous TesBng
* Headless Run Support
![Page 6: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/6.jpg)
Pros
* NodeJS NaBve (i.e. headless out of the box)
* ExcepBon on Failure (only req. for asserBon lib)
* Asynchronous TesBng
Cons
* Support (i.e. no Ember happy path)
* IntegraBons
![Page 7: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/7.jpg)
![Page 8: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/8.jpg)
![Page 9: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/9.jpg)
![Page 10: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/10.jpg)
![Page 11: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/11.jpg)
Sandbox
* Great for OrganizaBon
* Call `restore()` Once
![Page 12: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/12.jpg)
Spies
* Records arguments, return values and excepBons
* Wrap ExisBng or Anonymous
* Maintains Behavior
![Page 13: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/13.jpg)
Stubs
* Spies with Defined Behavior
* Does Not Call ExisBng FuncBon
* Useful for Forcing Errors
![Page 14: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/14.jpg)
Mocks
* Stubs with Defined ExpectaBons
* Use Only for Method Under Test
![Page 15: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/15.jpg)
How is AdStage Tes6ng?• Makefile to run specs with NodeJS
• HBS Compiled to JS • jsDOM • RequireJS to load only the components being tested
![Page 16: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/16.jpg)
How is AdStage Tes6ng?• Makefile to run specs with NodeJS
• HBS Compiled to JS • jsDOM • RequireJS to load only the components being tested
![Page 17: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/17.jpg)
What About Ember-‐CLI?
• InstallaBon is Stupid Easy
• Specs are Transpiled • Specs Run in the Browser
![Page 18: Mocha, chai and sinon](https://reader036.fdocuments.net/reader036/viewer/2022082218/55cd1315bb61eb99158b45ee/html5/thumbnails/18.jpg)
What About Ember-‐CLI?
• InstallaBon is Stupid Easy
• Specs are Transpiled • Specs Run in the Browser