解决业力中源文件的依赖性解析

时间:2018-12-19 08:52:22

标签: javascript jasmine sapui5 karma-jasmine code-coverage

我们已经使用UI5库构建了应用程序,并为此编写了茉莉花测试。我们很难获取这些javascript文件的覆盖范围。

  • 项目结构: 当前,我们的项目结构包括典型的模型,视图,控制器结构。我们大约有1000个文件保存在不同的层次结构中。

  • 眼前的问题: 我正在尝试覆盖这个项目,并为此尝试Karma。 使用默认的业力配置,我运行了测试。测试失败,根据日志,我可以看到karma期望项目中的所有文件按照其依赖关系的顺序列出。由于文件数量巨大,这对我来说将是极其困难的。

  • 问题:

    1. 我对业力的理解正确吗?唯一的方式就是按依赖关系的顺序提供所有文件吗?

    2. 有人知道我可以使用javascript文件覆盖的任何替代解决方案或替代库吗?

完整的karma.config.js

module.exports = function (config) {
    config.set({
        basePath: '',
        frameworks: ['jasmine', 'openui5'],
        openui5: {
            path: "https://sapui5.hana.ondemand.com/resources/sap-ui-core.js",
            useMockServer: false
        },

        client: {
            openui5: {
                config: {
                    theme: 'sap_bluecrystal',
                    libs: 'sap.m,sap.bpm',

                    resourceRoots: {
                        "sap.bpm": "base/target/appresources/com/sap/bpm",
                    }
                }
            }
        },

        files: [
            'src/**/*.js' , 'test/**/*.js'

        ],

        preprocessors: {
            'test/**/*.js': ['coverage']
        },

        captureTimeout: 210000,
        browserDisconnectTolerance: 3,
        browserDisconnectTimeout: 210000,
        browserNoActivityTimeout: 210000,

        plugins: [
            'karma-jasmine',
            'karma-coverage',
            'karma-chrome-launcher',
            'karma-openui5',
            'karma-requirejs'

        ],
        reporters: ['progress', 'coverage'],
        port: 9878,
        colors: true,
        logLevel: config.LOG_DEBUG,
        autowatch: false,
        browsers: ['Chrome'],
        singleRun: true,
        concurrency: Infinity,
        coverageReporter: {
            includeAllSources: true,
            dir: 'coverage/',
            reporters: [
                { type: "html", subdir: "html" },
                { type: 'text-summary' }
            ]
        }
    });
};

1 个答案:

答案 0 :(得分:0)

好吧:在预处理程序条目中,您必须指定要覆盖的文件。

在conf文件中设置测试文件以进行检测,这不太可能是您想要实现的目标

切换到

preprocessors: {
  'src/**/*.js': ['coverage']
},

可能会为您带来更好的结果:)