AngularJS:n kehittäjät ovat tehneet myös Karma-testiajajan jolla voi helposti suorittaa JavaScript Unit-testejä oikeassa selaimessa eikä missään simuloidussa ympäristössä. Karma vaatii Node.js:n toimiakseen. Karma ei mitenkään vaadi Angularia joten sillä voi testata kaikkea JavaScript-koodia.
Karmalla pystyy ajamaan myös end-to-end testejä joissa selaimeen avataan oikea ohjelman sivu ja Karma klikkailee linkkejä. Näiden tekeminen on työläämpää kuin Unit-testien joten niitä ei käydä läpi tässä. Lisää tietoa AngularJS:n eri testitavoista löytyy loistavasta Year of Moo -blogista.
npm install -g karma
karma
on PATH:ssa joten sitä voi käyttää suoraan komentoriviltä kaikissa hakemistoissa
SET FIREFOX_BIN=C:\Program Files (x86)\Mozilla Firefox\firefox.exe
. Tämä täytyy tehdä joka kerta ennen testien ajoa ellei tätä laita ympäristömuuttujiin.karma start
Testit kirjoitetaan Jasmine frameworkilla. Jasminen ei sinänäsä ole mitenkään sidoksissa Angulariin joten sitä voi käyttää kaiken JavaScript-koodin testaamiseen.
Jasminen tärkeimmät komennot:
describe
määrittää testialueen jolle suoritetaan samat beforeEach
-metoditbeforeEach
määrittää ennen joka testimetodia ajettavan koodin. Sama kuin JUnitin @Before
it
määrittää yhden testin. Angularin palveluita voi injektoida inject
metodilla.spyOn
asettaa kuuntelijan metodille. Kuuntelija äänittää kutsujen määrän ja parametrit jotka voi validoida. Alkuperäistä metodia ei kutsuta ellei määritä spyOn(...).andCallThrough()
. Alkuperäisen metodin sijaan voi kutsua myös omaa mock-implementaatiota spyOn(...).andCallFake(function() {})
-metodillaexpect
vastaa JUnitin assert
-metodeja. Arvojen yhtäsuuruutta voi verrata expect(...).toEqual()
metodilla ja vakoiltujen metodien parametreja voi tarkistaa expect(...).toHaveBeenCalledWith()
metodilla