mean.io 单元测试不 运行

mean.io unit tests don't run

从全新的 mean.io 应用开始,即

mean init newApp
cd newApp
npm install [1]
bower install

[1] npm install --dev 导致 npm 永远 运行 并最终因内存不足错误而失败,所以我 运行 npm install 然后单独 npm install devPackage 对于 devDependencies

中列出的每个包

gulp env:test mochaTest 的输出是

Invoking gulp - development
[10:12:54] Using gulpfile ~/projects/kueDemo/gulpfile.js
[10:12:54] Starting 'env:test'...
[10:12:54] Finished 'env:test' after 56 μs
[10:12:54] Starting 'loadTestSchema'...
[10:12:54] Finished 'loadTestSchema' after 487 ms
[10:12:54] Starting 'mochaTest'...


  0 passing (0ms)

[10:12:54] Finished 'mochaTest' after 48 ms

也没有任何测试失败,而且在文章包中肯定有很多 运行 的测试,所以我不明白为什么他们没有被选中。

注意:我必须按 CTRL-C 停止 gulp 任务并 return 到提示符

应用程序本身 运行开箱即用。如果我 运行 gulp test,Karma 测试 运行 很好——mocha 测试仍然被忽略。

系统:

好的,经过一些调试我发现这是 mean.io 源代码中的错误。

gulp/test.js 中应更改以下行:

第 20 行: require('../node_modules/meanio/lib/core_modules/module/util').preload('../p

require('../node_modules/meanio/lib/core_modules/module/util').preload('./packages/**/server', 'model');

类似第24行:

return gulp.src('../packages/**/server/tests/*.js', {read: false})

return gulp.src('./packages/**/server/tests/*.js', {read: false})

node_modules/meanio/lib/core_modules/module/util 预加载函数现在将失败,但您可以通过修补 walk 函数中的 2 行 realPath 行来解决此问题:

// recursively walk modules path and callback for each file
function walk(wpath, type, excludeDir, callback) {
  // regex - any chars, then dash type, 's' is optional, with .js or .coffee extension, case-insensitive
  // e.g. articles-MODEL.js or mypackage-routes.coffee
  var rgx = new RegExp('(.*)-' + type + '(s?).(js|coffee)$', 'i');
  if (!fs.existsSync(wpath)) return;
  fs.readdirSync(wpath).forEach(function(file) {
    var newPath = path.join(wpath, file);
    var stat = fs.statSync(newPath);
    if (stat.isFile() && (rgx.test(file) || (baseRgx.test(file)) && ~newPath.indexOf(type))) {
      var realPath = fs.realpathSync(newPath);
      callback(realPath);
    } else if (stat.isDirectory() && file !== excludeDir && ~newPath.indexOf(type)) {
      walk(newPath, type, excludeDir, callback);
    }
  });
}