【问题标题】:failure to run mocha tests with sails未能用风帆运行 mocha 测试
【发布时间】:2015-06-14 13:43:46
【问题描述】:

我正在关注 Sails 文档并尝试运行 Mocha 测试。 我已经按照文档指定的方式编辑了我的package.json,但由于某种原因,当我尝试运行 Mocha 时,我总是收到 EACESS,权限被拒绝错误。

一开始我得到了:

Error: EACCES, permission denied '/Library/Application Support/Apple/ParentalControls/Users'

我不明白为什么它必须对运行我的测试做任何事情,但添加了此文件夹所需的权限。

然后我得到了:

Error: EACCES, permission denied '/Library/Application Support/ApplePushService'

再次,不明白,所以改变了这个文件夹的权限,这也没有帮助。

我不明白为什么 Mocha 需要这些文件的权限,或者如何修复它。

我运行了命令:

mocha test/bootstrap.test.js test/unit/**/*.test.js

而且我的项目结构和 Sails 教程中的完全一样。

我正在使用 Mocha@2.2.5。 我的同事克隆了 repo,并尝试在他的机器上运行测试,但失败并出现完全相同的错误。

我尝试降级到 Mocha@2.2.0 这也没有帮助。

完整的错误跟踪:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: EACCES, permission denied '/Library/Application Support/ApplePushService'
    at Error (native)
    at Object.fs.readdirSync (fs.js:761:18)
    at Glob._readdir (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:609:20)
    at Glob._process (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:393:15)
    at Glob.<anonymous> (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:427:14)
    at Array.forEach (native)
    at Glob.<anonymous> (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:426:9)
    at Glob._afterReaddir (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:635:15)
    at Glob._readdir (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:613:17)
    at Glob._process (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:393:15)
    at Glob.<anonymous> (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:427:14)
    at Array.forEach (native)
    at Glob.<anonymous> (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:426:9)
    at Glob._afterReaddir (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:635:15)
    at Glob._readdir (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:613:17)
    at Glob._process (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:393:15)
    at Glob.<anonymous> (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:427:14)
    at Array.forEach (native)
    at Glob.<anonymous> (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:426:9)
    at Glob._afterReaddir (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:635:15)
    at Glob._readdir (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:613:17)
    at Glob._process (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:393:15)
    at Glob.iterator (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:171:10)
    at Array.forEach (native)
    at new Glob (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:169:22)
    at glob (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:57:11)
    at Function.globSync (/usr/local/lib/node_modules/mocha/node_modules/glob/glob.js:76:10)
    at Object.lookupFiles (/usr/local/lib/node_modules/mocha/lib/utils.js:590:20)
    at /usr/local/lib/node_modules/mocha/bin/_mocha:320:30
    at Array.forEach (native)
    at Object.<anonymous> (/usr/local/lib/node_modules/mocha/bin/_mocha:319:6)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
npm ERR! Test failed.  See above for more details.

【问题讨论】:

  • ls test/unit/**/*.test.js 是做什么的?似乎您的 test/ 目录中的某处可能存在指向 /Library/Application Support/ 的符号链接。
  • 运行ls 命令返回:test/unit/controllers/UserController.test.js test/unit/models/User.test.js 这是我的两个测试文件。搜索时我没有看到任何符号链接。
  • 可能是您所在的特定目录有问题?尝试运行npm cache clean,然后再次运行npm install,然后再次运行该命令,看看它是否有效。如果没有,也许尝试切换目录?
  • 没有帮助。还尝试将文件夹移动到不是旧目录的父目录的其他目录 - 也没有帮助。
  • 你找到自己的路了吗?这个问题有点老了,我也有同样的问题。 mocha 正在扫描整个磁盘并死在第一个被拒绝的文件夹中

标签: node.js unit-testing sails.js mocha.js


【解决方案1】:

看看我的sails.js test example。我想它可能会对你有所帮助。

如下图代码,参考test/bootstrap.js

var Sails = require('sails');
var _ = require('lodash')
global.DOMAIN = 'http://localhost';
global.PORT = 1420;
global.HOST = DOMAIN + ':' + PORT;
before(function(callback) {
  this.timeout(7000);

  var configs = {
    log: {
      level: 'info'
    },
    connections: {
      memory: {
        // lets use memory tests ...
        adapter   : 'sails-memory'
      }
    },
    models: {
      connection: 'memory'
    },
    port: PORT,
    environment: 'test',

    // @TODO needs suport to csrf token
    csrf: false,

    // we dont need this configs in API test
    hooks: {
      grunt: false,
      socket: false,
      pubsub: false
    }
  };

  Sails.load(configs, function(err, sails) {
    if (err) {
      console.error(err);
      return callback(err);
    }

    console.log('rodo!')
    // here you can load fixtures, etc.
    callback(err, sails);
  });
});

after(function(done) {
  // here you can clear fixtures, etc.
  sails.lower(done);
});

【讨论】:

  • 仍然没有帮助。单独运行命令“mocha”,无论 Sails 也返回此权限被拒绝错误。我想这与 Sails 无关。
【解决方案2】:

我不确定它是否有帮助,但我遇到了类似的问题:当我在 shell 中输入 mocha 时,它在我的应用程序外部的文件夹中出现 EACCES 失败。 :

/usr/local/lib/node_modules/mocha/bin/_mocha:372
    throw err;
    ^

Error: EACCES: permission denied, scandir '/backup/mint17.3/etc/cups/ssl'

我发现错误来自文件 ./test/mocha.opt 是我从sails.js 文档中写的评论:

/**
* @Doc :: This file should contain mocha configuration as described here:     https://mochajs.org/#mochaopts
*     
*    Note: The default test-case timeout in Mocha is 2 seconds. Increase
*      the timeout value in mocha.opts to make sure the sails lifting completes
*      before any of the test-cases can be started.
*/

--timeout 5s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多