Search code examples
jasminejasmine-matchers

Is there a way to add a Jasmine matcher to the whole environment


There are plenty of documents that show how to add a matcher to a Jasmine spec (here, for example).

Has anyone found a way to add matchers to the whole environment; I'm wanting to create a set of useful matchers to be called by any and all tests, without copypasta all over my specs.

Currently working to reverse engineer the source, but would prefer a tried and true method, if one exists.


Solution

  • Sure, you just call beforeEach() without any spec scoping at all, and add matchers there.

    This would globally add a toBeOfType matcher.

    beforeEach(function() {
      var matchers = {
        toBeOfType: function(typeString) {
          return typeof this.actual == typeString;
        }
      };
    
      this.addMatchers(matchers);
    });
    
    describe('Thing', function() {
      // matchers available here.
    });
    

    I've made a file named spec_helper.js full of things like custom matchers that I just need to load onto the page before I run the rest of the spec suite.