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: [
'test/fixture/*.js',
'*.html'
],
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.