SlideShare una empresa de Scribd logo
1 de 49
JAK TESTOWAĆ CZYSTY KOD
JAVASCRIPT?
KILKA SŁÓW O TYM JAK UŁATWIĆ SOBIE PRACĘ
CZEŚĆ! NAZYWAM SIĘ PIOTR NALEPA
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 2
• Na co dzień pracuję w eZ Systems Polska,
• Piszę o tym co robię na swoim blogu,
• Zdarza mi się występować na konferencjach,
• W wolnych chwilach gram w piłkę nożną jako bramkarz.
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 3
DLACZEGO TESTUJEMY KOD JS?
4Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Zyskujemy pewność, że nasz kod działa
zgodnie z oczekiwaniami.
5Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Sprawdzamy jak się zachowa kod,
gdy wystąpią błędy.
6Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Mamy zabezpieczenie na przyszłość.
7Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Zwiększamy jakość kodu.
8Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
CO SIĘ DZIEJE GDY KODU NIE TESTUJEMY?
9Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Mamy więcej czasu
na tworzenie nowych rzeczy!
10Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Nie robimy nudnych rzeczy!
11Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Wszystko fajnie, do czasu …
12Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Aż nowe rzeczy zaczną psuć stare
13Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Aż kod zacznie być coraz trudniejszy do
utrzymania
14Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Coraz więcej czasu potrzebujemy na
rozbudowanie kodu o nowe rzeczy
15Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
JAK NALEŻY TESTOWAĆ KOD?
16Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Dokładnie
17Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Nie oszukujemy siebie z powodu lenistwa
18Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Analizujemy to co napisaliśmy
19Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Usuwamy zbędny kod
20Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
POLECANA STRUKTURA KATALOGÓW
Z TESTAMI
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 21
[główny-folder]
- plugin.js
- test/
- plugin-test.html
- plugin-tests.js
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 22
PRZYKŁADOWY KOD JS – PLUGIN.JS
23Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
window.Plugin = function (customParams) {
[...]
elements = [].slice.call(document.querySelectorAll(params.selector));
elements.forEach(function (element) {
element.addEventListener('click', clickCallback, false);
element.classList.add(CLASS_PLUGIN_READY);
});
[...]
};
24Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
W CZYM NAPISZEMY PIERWSZY TEST?
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 25
Mocha.js + Chai.js
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 26
SZABLON TESTU – PLUGIN-TEST.HTML
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 27
<div id="mocha"></div>
<div id="messages"></div>
<div id="fixtures"></div>
<script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script>
<script src="../node_modules/chai-dom/chai-dom.js"></script>
<script src="../plugin.js"></script>
<script>
mocha.setup('bdd');
mocha.reporter('html');
</script>
<script src="plugin-tests.js"></script>
<script>mocha.run();</script>
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 28
PLIK Z TESTAMI – PLUGIN-TESTS.JS
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 29
describe('Plugin', function () {
describe('Run with default settings', function () {
beforeEach(function () {
createPluginContainer();
new Plugin();
});
afterEach(destroyPlugin);
it('Should implement Plugin features on element', function () {
});
});
});
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 30
JAK TESTOWAĆ KOD?
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 31
Porównujemy wyniki działania kodu
z oczekiwanymi rezultatami
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 32
expect(pluginContainer).to.contain(SELECTOR_PLUGIN);
expect(pluginContainer.querySelectorAll(SELECTOR_PLUGIN)).to.have.length(1);
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 33
http://chaijs.com/api/bdd/
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 34
WYNIKI TESTÓW - PRZEGLĄDARKA
35Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
WYNIKI TESTÓW - TERMINAL
36Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
POKRYCIE KODU TESTAMI
37Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
Informacja na temat ilości kodu,
który został przetestowany
38Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
39
To tylko wskazówka a nie wyznacznik jakości
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
40
Łatwo można oszukać wskaźnik
pokrycia kodu testami
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
WYNIKI TESTÓW – POKRYCIE KODU TESTAMI
41Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
PORADA #1
TESTOWANIE ZACHOWANIA KODU
PO ZAKOŃCZENIU ANIMACJI
42Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
it('Should end of transition/animation', function (done) {
pluginContainer.addEventListener('transitionend', function () { // ewentualnie
'animationend'
[...]
done();
});
}
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 43
PORADA #2
ODPALANIE EVENTÓW NA OBIEKTACH DOM
44Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
it('Should make action after clicking on an element' , function (done) {
var element = document.querySelector(SELECTOR_PLUGIN),
event = document.createEvent('MouseEvents');
event.initEvent('click', false, true);
element.dispatchEvent(event);
[...]
}
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 45
PORADA #3
PRACA Z PHANTOMJS
46Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
• Prefixowane style CSS (-webkit-[nazwa_własności]),
• Prefixowane eventy JS (webkitTransitionEnd),
• Stary silnik JS (brak bind()).
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 47
WIĘCEJ INFORMACJI ZNAJDZIESZ NA:
BLOG.PIOTRNALEPA.PL
48Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
DZIĘKUJĘ ZA UWAGĘ
Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 49
@sunpietro
github.com/sunpietro

Más contenido relacionado

Similar a JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?

e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końceThe Software House
 
Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?
Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?
Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?Aleksandra (Ola) Kunysz
 
Codeception
CodeceptionCodeception
CodeceptioneEngine
 
Confitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ AllegroConfitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ Allegroallegro.tech
 
KraQA#28: Cel: automatyzacja
KraQA#28: Cel: automatyzacjaKraQA#28: Cel: automatyzacja
KraQA#28: Cel: automatyzacjakraqa
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiRadoslaw Smilgin
 
semKRK #13 - Aneta i Dawid Krystosik
semKRK #13 - Aneta i Dawid KrystosiksemKRK #13 - Aneta i Dawid Krystosik
semKRK #13 - Aneta i Dawid KrystosiksemKRK
 
4Developers 2018: Unit testing - introduction (Marek Kawczyński)
4Developers 2018: Unit testing - introduction (Marek Kawczyński)4Developers 2018: Unit testing - introduction (Marek Kawczyński)
4Developers 2018: Unit testing - introduction (Marek Kawczyński)PROIDEA
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...PROIDEA
 
Jak usprawnić proces rekrutacji? [case study Coders Lab]
Jak usprawnić proces rekrutacji? [case study Coders Lab]Jak usprawnić proces rekrutacji? [case study Coders Lab]
Jak usprawnić proces rekrutacji? [case study Coders Lab]Webankieta
 
Miquido cloud native testing
Miquido cloud native testingMiquido cloud native testing
Miquido cloud native testingŁukasz Rosłonek
 
Code Review budujące relacje w zespole
Code Review budujące relacje w zespoleCode Review budujące relacje w zespole
Code Review budujące relacje w zespoleMaciej Mortek
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testowWiktor Żołnowski
 
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedziećTesty jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedziećAleksandra (Ola) Kunysz
 
Matka, żona, i...testerka
Matka, żona, i...testerkaMatka, żona, i...testerka
Matka, żona, i...testerkatestuj.pl
 
Dobre praktyki w optymalizacji stron docelowych
Dobre praktyki w optymalizacji stron docelowychDobre praktyki w optymalizacji stron docelowych
Dobre praktyki w optymalizacji stron docelowychSilesia SEM
 
Case study wdrożenia nowego serwisu e-commerce dla marki NC+
Case study wdrożenia nowego serwisu e-commerce dla marki NC+Case study wdrożenia nowego serwisu e-commerce dla marki NC+
Case study wdrożenia nowego serwisu e-commerce dla marki NC+Squiz Poland
 

Similar a JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT? (20)

e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końce
 
Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?
Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?
Czy na pewno wiesz już wszystko o testach jednostkowych w Javie?
 
Codeception
CodeceptionCodeception
Codeception
 
Confitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ AllegroConfitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ Allegro
 
KraQA#28: Cel: automatyzacja
KraQA#28: Cel: automatyzacjaKraQA#28: Cel: automatyzacja
KraQA#28: Cel: automatyzacja
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacji
 
semKRK #13 - Aneta i Dawid Krystosik
semKRK #13 - Aneta i Dawid KrystosiksemKRK #13 - Aneta i Dawid Krystosik
semKRK #13 - Aneta i Dawid Krystosik
 
4Developers 2018: Unit testing - introduction (Marek Kawczyński)
4Developers 2018: Unit testing - introduction (Marek Kawczyński)4Developers 2018: Unit testing - introduction (Marek Kawczyński)
4Developers 2018: Unit testing - introduction (Marek Kawczyński)
 
university day 1
university day 1university day 1
university day 1
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Tester.pl - Numer 1
Tester.pl - Numer 1Tester.pl - Numer 1
Tester.pl - Numer 1
 
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...
 
Jak usprawnić proces rekrutacji? [case study Coders Lab]
Jak usprawnić proces rekrutacji? [case study Coders Lab]Jak usprawnić proces rekrutacji? [case study Coders Lab]
Jak usprawnić proces rekrutacji? [case study Coders Lab]
 
Miquido cloud native testing
Miquido cloud native testingMiquido cloud native testing
Miquido cloud native testing
 
Code Review budujące relacje w zespole
Code Review budujące relacje w zespoleCode Review budujące relacje w zespole
Code Review budujące relacje w zespole
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedziećTesty jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
 
Matka, żona, i...testerka
Matka, żona, i...testerkaMatka, żona, i...testerka
Matka, żona, i...testerka
 
Dobre praktyki w optymalizacji stron docelowych
Dobre praktyki w optymalizacji stron docelowychDobre praktyki w optymalizacji stron docelowych
Dobre praktyki w optymalizacji stron docelowych
 
Case study wdrożenia nowego serwisu e-commerce dla marki NC+
Case study wdrożenia nowego serwisu e-commerce dla marki NC+Case study wdrożenia nowego serwisu e-commerce dla marki NC+
Case study wdrożenia nowego serwisu e-commerce dla marki NC+
 

Más de Piotr Nalepa

Building Framework Agnostic UI with Web Components
Building Framework Agnostic UI with Web ComponentsBuilding Framework Agnostic UI with Web Components
Building Framework Agnostic UI with Web ComponentsPiotr Nalepa
 
Extending eZ Platform 2.x with Symfony and React
Extending eZ Platform 2.x with Symfony and ReactExtending eZ Platform 2.x with Symfony and React
Extending eZ Platform 2.x with Symfony and ReactPiotr Nalepa
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Piotr Nalepa
 
Perfomance w Joomla - Jak przyspieszyć działanie strony?
Perfomance w Joomla - Jak przyspieszyć działanie strony?Perfomance w Joomla - Jak przyspieszyć działanie strony?
Perfomance w Joomla - Jak przyspieszyć działanie strony?Piotr Nalepa
 
ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...
ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...
ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...Piotr Nalepa
 
Semantyka w tworzeniu stron www prezentacja
Semantyka w tworzeniu stron www   prezentacjaSemantyka w tworzeniu stron www   prezentacja
Semantyka w tworzeniu stron www prezentacjaPiotr Nalepa
 

Más de Piotr Nalepa (7)

Building Framework Agnostic UI with Web Components
Building Framework Agnostic UI with Web ComponentsBuilding Framework Agnostic UI with Web Components
Building Framework Agnostic UI with Web Components
 
Extending eZ Platform 2.x with Symfony and React
Extending eZ Platform 2.x with Symfony and ReactExtending eZ Platform 2.x with Symfony and React
Extending eZ Platform 2.x with Symfony and React
 
Extending Studio
Extending StudioExtending Studio
Extending Studio
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
 
Perfomance w Joomla - Jak przyspieszyć działanie strony?
Perfomance w Joomla - Jak przyspieszyć działanie strony?Perfomance w Joomla - Jak przyspieszyć działanie strony?
Perfomance w Joomla - Jak przyspieszyć działanie strony?
 
ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...
ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...
ZOSTAŃ NINJA JOOMLA! DEVELOPEREM Automatyzacja zadań w procesie tworzenia sza...
 
Semantyka w tworzeniu stron www prezentacja
Semantyka w tworzeniu stron www   prezentacjaSemantyka w tworzeniu stron www   prezentacja
Semantyka w tworzeniu stron www prezentacja
 

JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?

  • 1. JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT? KILKA SŁÓW O TYM JAK UŁATWIĆ SOBIE PRACĘ
  • 2. CZEŚĆ! NAZYWAM SIĘ PIOTR NALEPA Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 2
  • 3. • Na co dzień pracuję w eZ Systems Polska, • Piszę o tym co robię na swoim blogu, • Zdarza mi się występować na konferencjach, • W wolnych chwilach gram w piłkę nożną jako bramkarz. Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 3
  • 4. DLACZEGO TESTUJEMY KOD JS? 4Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 5. Zyskujemy pewność, że nasz kod działa zgodnie z oczekiwaniami. 5Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 6. Sprawdzamy jak się zachowa kod, gdy wystąpią błędy. 6Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 7. Mamy zabezpieczenie na przyszłość. 7Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 8. Zwiększamy jakość kodu. 8Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 9. CO SIĘ DZIEJE GDY KODU NIE TESTUJEMY? 9Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 10. Mamy więcej czasu na tworzenie nowych rzeczy! 10Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 11. Nie robimy nudnych rzeczy! 11Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 12. Wszystko fajnie, do czasu … 12Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 13. Aż nowe rzeczy zaczną psuć stare 13Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 14. Aż kod zacznie być coraz trudniejszy do utrzymania 14Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 15. Coraz więcej czasu potrzebujemy na rozbudowanie kodu o nowe rzeczy 15Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 16. JAK NALEŻY TESTOWAĆ KOD? 16Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 17. Dokładnie 17Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 18. Nie oszukujemy siebie z powodu lenistwa 18Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 19. Analizujemy to co napisaliśmy 19Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 20. Usuwamy zbędny kod 20Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 21. POLECANA STRUKTURA KATALOGÓW Z TESTAMI Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 21
  • 22. [główny-folder] - plugin.js - test/ - plugin-test.html - plugin-tests.js Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 22
  • 23. PRZYKŁADOWY KOD JS – PLUGIN.JS 23Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 24. window.Plugin = function (customParams) { [...] elements = [].slice.call(document.querySelectorAll(params.selector)); elements.forEach(function (element) { element.addEventListener('click', clickCallback, false); element.classList.add(CLASS_PLUGIN_READY); }); [...] }; 24Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 25. W CZYM NAPISZEMY PIERWSZY TEST? Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 25
  • 26. Mocha.js + Chai.js Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 26
  • 27. SZABLON TESTU – PLUGIN-TEST.HTML Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 27
  • 28. <div id="mocha"></div> <div id="messages"></div> <div id="fixtures"></div> <script src="../node_modules/mocha/mocha.js"></script> <script src="../node_modules/chai/chai.js"></script> <script src="../node_modules/chai-dom/chai-dom.js"></script> <script src="../plugin.js"></script> <script> mocha.setup('bdd'); mocha.reporter('html'); </script> <script src="plugin-tests.js"></script> <script>mocha.run();</script> Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 28
  • 29. PLIK Z TESTAMI – PLUGIN-TESTS.JS Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 29
  • 30. describe('Plugin', function () { describe('Run with default settings', function () { beforeEach(function () { createPluginContainer(); new Plugin(); }); afterEach(destroyPlugin); it('Should implement Plugin features on element', function () { }); }); }); Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 30
  • 31. JAK TESTOWAĆ KOD? Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 31
  • 32. Porównujemy wyniki działania kodu z oczekiwanymi rezultatami Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 32
  • 33. expect(pluginContainer).to.contain(SELECTOR_PLUGIN); expect(pluginContainer.querySelectorAll(SELECTOR_PLUGIN)).to.have.length(1); Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 33
  • 34. http://chaijs.com/api/bdd/ Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 34
  • 35. WYNIKI TESTÓW - PRZEGLĄDARKA 35Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 36. WYNIKI TESTÓW - TERMINAL 36Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 37. POKRYCIE KODU TESTAMI 37Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 38. Informacja na temat ilości kodu, który został przetestowany 38Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 39. 39 To tylko wskazówka a nie wyznacznik jakości Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 40. 40 Łatwo można oszukać wskaźnik pokrycia kodu testami Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 41. WYNIKI TESTÓW – POKRYCIE KODU TESTAMI 41Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 42. PORADA #1 TESTOWANIE ZACHOWANIA KODU PO ZAKOŃCZENIU ANIMACJI 42Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 43. it('Should end of transition/animation', function (done) { pluginContainer.addEventListener('transitionend', function () { // ewentualnie 'animationend' [...] done(); }); } Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 43
  • 44. PORADA #2 ODPALANIE EVENTÓW NA OBIEKTACH DOM 44Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 45. it('Should make action after clicking on an element' , function (done) { var element = document.querySelector(SELECTOR_PLUGIN), event = document.createEvent('MouseEvents'); event.initEvent('click', false, true); element.dispatchEvent(event); [...] } Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 45
  • 46. PORADA #3 PRACA Z PHANTOMJS 46Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 47. • Prefixowane style CSS (-webkit-[nazwa_własności]), • Prefixowane eventy JS (webkitTransitionEnd), • Stary silnik JS (brak bind()). Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 47
  • 48. WIĘCEJ INFORMACJI ZNAJDZIESZ NA: BLOG.PIOTRNALEPA.PL 48Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016
  • 49. DZIĘKUJĘ ZA UWAGĘ Jak testować czysty kod JavaScript? Kilka słów o tym jak ułatwić sobie pracę. - Piotr Nalepa | Meet.js Katowice - 10.02.2016 49 @sunpietro github.com/sunpietro