无法在我的摩卡测试中通过gulp与业力运动员一起使用require

问题描述:

我再次遇到同样的问题,我的第二个项目。可悲的是我必须张贴大多是每一个配置文件,在这里向您展示足够的信息 - 所以不要害怕;)无法在我的摩卡测试中通过gulp与业力运动员一起使用require

我用下面的单元测试:

  • 一饮而尽
  • 因缘
  • 摩卡

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"); 
     }); 
    }); 
}); 

输出 “测试” 任务

[09:51:39] Using gulpfile c:\...\...\...\...\JavaScriptProjects\HeritageGuard\gulpfile.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 

正如你可以读要求没有被定义但不使用VAR断言=要求(“断言”);在我的摩卡测试文件中我无法使用断言库==无法测试。

那么之前有人解决了这个问题?我找不到任何解决方案,或者使用另一种方式让断言库工作(不需要),也没有要求在测试文件中工作。

+0

我很犹豫在这里提供建议,因为每次我设置了一个测试跑步者,都需要花费数小时,并且每一步都被像你这样的难以理解的错误打断。但是,您可能需要[测试框架和插件](https://karma-runner.github.io/0.13/config/plugins.html)。我一直使用Jasmine和[karma-jasmine插件](https://github.com/karma-runner/karma-jasmine)。 – Andrew

+0

耶茉莉工作得很好 - 但我想用我的家庭项目的摩卡...但是啊...看到上面;) – xetra11

+0

我不认为你可以只使用噶玛。你需要一个测试框架。否则,它只是一个赤裸的发射器。你怎么把它整合进去,我不确定。 – Andrew

Karma不是服务器端测试框架,因此您没有NodeJS的模块,如fsassert

Karma将直接将测试/框架脚本直接注入到页面中。它不使用任何形式的捆绑/模块模式。

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