Getting Started with Testing with Jasmine
Tags: javascript, webdev, programming, testing
Published: 2021-01-23 20:50:47

**Check out my books on Amazon at https://www.amazon.com/John-Au-Yeung/e/B08FT5NT62**

**Subscribe to my email list now at http://jauyeung.net/subscribe/**

Testing is an important part of JavaScript.

In this article, we’ll look at getting started with Jasmine.

### Using Jasmine with Node

We can add Jasmine to our Node project by running:

```
npm install --save-dev jasmine
```

This will install a local copy of Jasmine for our project.

We can also install it globally by running:

```
npm install -g jasmine
```

Then we can initialize the Jasmine project by running:

```
jasmine init
```

if we installed Jasmine globally.

If we didn’t we run:

```
npx jasmine init
```

Then we generate the spec and source files by running:

```
jasmine examples
```

Then we can change the configuration in `spec/support/jasmine.json` /

The `spec_dir` property is the directory with the test files.

`spec_file` has the patterns for the spec files.

`helpers` have the paths for the helpers for the test files.

`stopSpecOnExpectationFailure` is a boolean that indicates whether we want to stop running tests when a test fails.

`random` means whether we run specs in a semi-random order.

We can run tests with:

```
jasmine spec/appSpec.js
```

where `spec/appSpec.js` is the path.

We can also specify a pattern for the path of the tests;

```
jasmine "**/tests/**/*Spec.js"
```

### CLI Options

We can change the options by setting some config.

For instance, we can write:

```
JASMINE_CONFIG_PATH=spec/config/jasmine.json jasmine

jasmine --config=spec/config/jasmine.json
```

We can disable colors with the `--no-color` flag.

`--filter` lets us specs that match a given string.

`--stop-on-failure` lets us stop running tests on first failure if it’s `true` .

`--random` tells Jasmine to run tests in semi-random order.

`--seed` lets us set the randomization seed if randomization is turned on.

`--reporter` lets us set the test reporter.

We can also use the `jasmine` library to set the config.

For instance, we can write:

```
const Jasmine = require('jasmine');
const jasmine = new Jasmine();
jasmine.loadConfigFile('spec/support/jasmine.json');
jasmine.loadConfig({
  spec_dir: 'spec',
  spec_files: [
    'appSpec.js',
    'requests/**/*[sS]pec.js',
    'utils/**/*[sS]pec.js'
  ],
  helpers: [
    'helpers/**/*.js'
  ]
});
```

to set the config.

We can also set our own `onComplete` callback to do what we want is all tests pass or when they fail:

```
jasmine.onComplete(function(passed) {
  if (passed) {
    console.log('passed');
  } else {
    console.log('failed');
  }
});
```

### Reporters

We can set the test reports.

The default is the ConsoleReporter.

We can set the reporter by writing:

```
jasmine.configureDefaultReporter({
  timer: new jasmine.jasmine.Timer(),
  print(...args) {
    process.stdout.write(args);
  },
  showColors: true
});
```

to change how test results are reported.

### Run Tests

To run tests, we run the `execute` method:

```
jasmine.execute();
```

We can also pass in a file name or spec name to run them:

```
jasmine.execute(['fooSpec.js'], 'a spec name');
```

So we can write:

```
const Jasmine = require('jasmine');
const jasmine = new Jasmine();

jasmine.loadConfigFile('spec/support/jasmine.json');
jasmine.configureDefaultReporter({
  showColors: false
});
jasmine.execute();
```

to run our tests.

### Conclusion

We can use Jasmine to run our tests.

There’re many options we can set, like the files to run, whether to show colors or not, randomize tests, etc.