【问题标题】:How can you correctly require a module in mocha.opts?如何正确地在 mocha.opts 中需要一个模块?
【发布时间】:2015-05-23 01:24:04
【问题描述】:

我正在使用mocha-mongoose 在测试之间自动清除 mongo。在文档中,它说在您的规范文件中或全局地在您的规范帮助程序中需要该模块。

按照规范执行此操作效果很好,但我想从 mocha.opts 执行此操作以保持我的代码干燥。

用 mocha.opts 要求它不起作用。 Mongo 在规格之间没有被清除

mocha.opts:

--require ./test/common.js
--reporter spec
--ui bdd
--recursive
--colors
--timeout 60000
--slow 300

common.js:

require('mocha-mongoose')('mongodb://your-mongodb-url-here');

在每个规范文件中都需要它

test.js

var should = require('chai').should()
  , require('mocha-mongoose')('mongodb://your-mongodb-url-here');

describe("Example test", function() {
    it(' Mongo will be automatically clear all collections',);
});

我怎样才能在 mocha.opts 中正确地要求mocha-mongoose,这样我就不必在每次测试中都重复它?

【问题讨论】:

    标签: node.js mongodb mongoose mocha.js


    【解决方案1】:

    它的工作方式是检查beforeEach 并将自己注册为beforeEach 挂钩。这是relevant source

    if (!options.noClear && !beforeEachRegistered) {
      if ('function' == typeof beforeEach && beforeEach.length > 0) {
        // we're in a test suite that hopefully supports async operations
        beforeEach(clearDB);
        beforeEachRegistered = true;
      }
    }
    

    问题是beforeEach--require 加载的模块不可用。所以你不能用--require来做。

    我唯一能想象mocha-mongoose 的作者对“你的规范助手”的意思是一个模块,其中包含每个规范所需的一堆实用函数:而不是在每个规范中添加 require('mocha-mongoose')(...);,你'd 只需将其添加到每个规范所需的模块中。

    【讨论】:

    • 这正是mocha-mongoose(我)的作者的意思!
    猜你喜欢
    • 2015-09-25
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2011-12-14
    • 2012-07-09
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多