让 Istanbul.js 忽略 define (require.js) 定义

Getting Istanbul.js to ignore the define (require.js) definition

假设我有以下代码:

define([
    'a'
], function(a) {
    return {
        initialize: function() {

        },

        stuff: function() {

        }
    };
});

伊斯坦布尔报告仅测试了1/3 的功能。这在某种程度上是正确的,因为我只有 运行 针对 main.initialize.

的测试

如何让伊斯坦布尔忽略用于定义回调的函数?

编辑:附加 Gruntfile.js 配置

jasmine: {
    coverage: {
        src: 'src/assets/js/app/**/*.js',
        options: {
            specs: 'src/assets/js/spec/**/*Spec.js',
            host: 'http://127.0.0.1:8000/',
            template: require('grunt-template-jasmine-istanbul'),
            templateOptions: {
                //files: 'src/assets/js/app/**/*.js',
                coverage: 'bin/coverage/coverage.json',
                report: [
                    {type: 'html', options: {dir: 'src/coverage/html'}},
                    {type: 'text-summary'}
                ],
                template: require('grunt-template-jasmine-requirejs'),
                templateOptions: {
                    requireConfig: {
                        baseUrl: 'src/assets/js',
                        paths: {
                /*          'jquery': 'lib/jquery',
                            'underscore': 'lib/lodash',
                            'text': 'lib/text',
                            'i18n': 'lib/i18n',*/
                        }
                    }
                }


            },
            keepRunner: true
        }
    }
}

编辑:规范示例

define([
    'app/main'
], function(main) {
    describe('app/main', function() {
        it('initailize should not error', function() {
            expect(main.initialize()).toBe(undefined);
        });
    });
});

伊斯坦布尔让您在代码中明确定义自己的自定义忽略 here

您可以在文件顶部使用 /* istanbul ignore define */ 以防止 define(...) 被检查。

希望对您有所帮助