karma-ng-json2js-preprocessor

A Karma plugin. Compile JSON files to Angular constants on the fly.

karma-ng-json2js-preprocessor

Preprocessor for converting JSON files to AngularJS constants.

The easiest way is to keep karma-ng-json2js-preprocessor as a devDependency in your package.json. You can simple do it by:

npm install karma-ng-json2js-preprocessor --save-dev
// karma.conf.js 
module.exports = function(config) {
  config.set({
    preprocessors: {
      '**/*.html': ['ng-html2js'],
      '**/*.json': ['ng-json2js']
    },
 
    plugins: [
        'karma-ng-json2js-preprocessor'
    ],
 
    files: [
      'app/**/*.js',         // application files 
      'test/fixture/*.json', // JSON fixtures 
      'test/spec/*.js',      // test files 
    ],
 
    ngJson2JsPreprocessor: {
      // strip this from the file path 
      stripPrefix: 'test/fixture/',
      // prepend this to the 
      prependPrefix: 'served/',
 
      /* or define a custom transform function
      cacheIdFromPath: function(filepath) {
        return cacheId;
      }
      */
    }
  });
};

This preprocessor converts JSON files into Angular constants and puts them in separate Angular modules; each named the same as the source JSON file and generates Angular modules.

For instance this test/fixture/data.json ...

{
    "prop": "val"
}

... with the configuration given above will be converted into:

angular.module('served/data.json', []).constant('servedData', {
    prop: 'val'
});

Inject json fixture into your test case:

describe('me', function(){
    beforeEach(module('served/data.json'));
 
    it('should not fail', function() {
        var testFixture;
        inject(function (_servedData_) {
            testFixture = _servedData_;
        });
 
        expect(testFixture).toEqual({
            prop: 'val'
        });
    });
 
});

Before sending a pull request, run grunt in terminal to make sure all tests pass. To continuously run tests during development, run karma start.

For more information on Karma see the homepage.