# Unit Tests¶

## Configuration¶

The main configuration file to look at is /tests/karma.conf.js. It configures our files, exclude and preprocessors paths.

In files you add all the files required to be loaded in your tests. For example if we do not add jQuery into this array, we would not have it available to us while the tests run.

The exclude setting allows us to specifically exclude certain files from loading in the browser. By defining a path - say addons/*.js in exclude - we can exclude scripts such as addons/myscript.js.

Finally, add all files you want to be covered to preprocessors. We do not simply include all files, as we cannot guarantee the coverage of libraries or 3rd party addons.

## Fixtures¶

/tests/fixtures is used to load HTML snippets in your unit tests. Simply define the path in test file, load the fixture and then test against it.

// load the fixture
fixture.setBase('tests/fixtures');

// test
expect(fixture.el.firstChild).to.equal(this.markup[0][0]);

// now let's cleanup
fixture.cleanup()


This folder is added when running unit tests either through gulp tests, gulp tests:unit or gulp tests:watch. Coverage uses the istanbul tool to give you a nice UI for debugging. Just simply launch the index file in either one of the sub-folders generated. There can be as many sub-folders as clients connected to your runner.