Karma & JSON: karma-read-json5

Suite à l'article Karma & Angular: charger des fichiers JSON "étendus", je viens de publier un petit plugin pour aider au chargement de fichiers JSON, notamment ceux étendus: karma-read-json5


Pour l'installer, il suffit de faire:

npm install --save-dev --save-exact karma-read-json5

Pour le configurer, il faut bien penser à le déclarer à la fois dans la section "frameworks" mais aussi "plugins" de votre de configuration Karma:

// Karma configuration
// Generated on Sun Jul 16 2017 13:22:56 GMT+0200 (Paris, Madrid (heure d’été))

module.exports = function (config) {
    config.set({

        // base path that will be used to resolve all patterns (eg. files, exclude)
        basePath: '',


        // frameworks to use
        // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
        frameworks: ['jasmine', 'readJSON'],


        // list of files / patterns to load in the browser
        files: [
            { 'pattern': 'test/**/*.json', 'included': false, 'served': true, 'watched': false },
            'test/**/*Spec.js'
        ],


        // list of files to exclude
        exclude: [],


        // preprocess matching files before serving them to the browser
        // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
        preprocessors: {},


        // test results reporter to use
        // possible values: 'dots', 'progress'
        // available reporters: https://npmjs.org/browse/keyword/karma-reporter
        reporters: ['progress'],


        // web server port
        port: 9876,


        // enable / disable colors in the output (reporters and logs)
        colors: true,


        // level of logging
        // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        logLevel: config.LOG_DEBUG,


        // enable / disable watching file and executing tests whenever any file changes
        autoWatch: false,


        // start these browsers
        // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
        browsers: ['PhantomJS'],

        // Which plugins to enable
        plugins: [
            'karma-jasmine',
            'karma-phantomjs-launcher',
            'karma-read-json5'
        ],

        // Continuous Integration mode
        // if true, Karma captures browsers, runs the tests and exits
        singleRun: true,

        // Concurrency level
        // how many browser should be started simultaneous
        concurrency: Infinity
    })
};



Et enfin, il faut tout simplement l'utiliser comme suit:

'use strict';

describe('Sample - ', function () {
    it('simple', function () {
        expect(true).toBe(true);
    });

    it('with simple json', function () {
        expect(readJSON('test/mock/normal.json')).toEqual({
            "array": [
                1,
                2,
                3
            ],
            "boolean": true,
            "null": null,
            "number": 123,
            "object": {
                "a": "b",
                "c": "d",
                "e": "f"
            },
            "string": "Hello World"
        });
    });

    it('with extended json', function () {
        expect(readJSON('test/mock/extended.json')).toEqual({
                "array": [
                    1,
                    2,
                    3
                ],
                "boolean": true,
                "null": null,
                "Infinity": Infinity,
                "number": 123,
                "object": {
                    "a": "b",
                    "c": "d",
                    "e": "f"
                },
                "string": "Hello World"
            }
        );
    });
});

Commentaires

Posts les plus consultés de ce blog

ISO: liens & outils utiles

NodeJs et SSL: une petite analyse

Créer sa commande slack en quelques minutes