不能在我的mocha测试中使用需求通过gulp与karma runner

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不能在我的mocha测试中使用需求通过gulp与karma runner相关的知识,希望对你有一定的参考价值。

我的第二个项目又遇到了同样的问题。可悲的是,我必须在这里发布大部分配置文件,以向您显示足够的信息 - 所以不要害怕;)

我正在使用以下单元测试:

  • 因果报应
  • 抹茶

gulpfile.js

// including plugins
var gulp = require('gulp')
    , uglify = require("gulp-uglify")
    , concat = require('gulp-concat')
    , clean = require('gulp-clean')
    , open = require('gulp-open')
    , babel = require("gulp-babel")
    , copy = require("gulp-copy")
    , mocha = require('gulp-mocha');

var Server = require('karma').Server;


gulp.task('tests', function(done) {
    Server.start({
        configFile: __dirname + '/karma.config.js',
        singleRun: true
    }, function() {
        done();
    });
});

karma.config.js

module.exports = function(config) {
    config.set({
        browsers: ['Chrome'],
        frameworks: ['mocha'],
        files: [
            './target/src/heritage.guard.js',
            './tests/dummies/dummies.babel.js',
            './tests/heritageguardtests.js'
        ],

        plugins:[
            'karma-chrome-launcher',
            'karma-mocha'
        ]
    });
};

heritageguardtest.js

var assert = require('assert');

var classDummy = new ClassDummy();
var superClassDummy = new SuperClassDummy();

describe('HeritageGuard Tests', function () {
    describe('getSuperClassName', function () {
        it('should return the name of the super class as String', function () {

            var superClassName = HeritageGuard.getSuperClassName(classDummy);
            assert.equal(superClassName, "SuperClassDummy");
        });
    });
});

输出Gulp“测试”任务

[09:51:39] Using gulpfile c:............javascriptProjectsHeritageGuardgulpfile.js
[09:51:39] Starting 'tests'...
06 03 2016 09:51:39.512:WARN [karma]: Port 9876 in use
06 03 2016 09:51:39.514:WARN [karma]: Port 9877 in use
06 03 2016 09:51:39.515:INFO [karma]: Karma v0.13.21 server started at http://localhost:9878/
06 03 2016 09:51:39.519:INFO [launcher]: Starting browser Chrome
06 03 2016 09:51:48.390:INFO [Chrome 49.0.2623 (Windows 10 0.0.0)]: Connected on socket /#aVMDjm22W8-g3Z_8AAAA with id 44639779
Chrome 49.0.2623 (Windows 10 0.0.0) ERROR
  Uncaught ReferenceError: require is not defined
  at c:/.../.../.../.../JavaScriptProjects/HeritageGuard/tests/heritageguardtests.js:8


[09:51:48] Finished 'tests' after 9.06 s

Process finished with exit code 0

正如你所知,require没有定义但没有使用var assert = require('assert');在我的mocha测试文件中我不能使用断言库==无法测试。

那么以前有人怎么解决这个问题呢?我找不到任何解决方案,无论是使用另一种方式来使断言库工作(没有require),也没有要求在testfile中工作。

答案

Karma不是服务器端测试框架,因此您没有像Qazxswpoi或fs这样的NodeJS模块。

Karma将简单地将测试/框架脚本直接注入页面。它不使用任何类型的捆绑/模块模式。

您需要使用Karma包含一个断言库(如果您想要“expect”语法,请查看chai.js),方法是将其添加到karma.conf.js中的assert条目中,然后它应该全局可用,不需要任何files:ing。

以上是关于不能在我的mocha测试中使用需求通过gulp与karma runner的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 mocha 在我的 ecmascript-6 应用程序中对 react-templates 进行单元测试吗?

节点 - 使用 mocha 测试时更改输出颜色

运行 mocha 测试后如何杀死 nodemon 进程?

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

如何使用 Node、Mocha 获取代码覆盖率信息