如何正确地在 mocha.opts 中需要一个模块?
Posted
技术标签:
【中文标题】如何正确地在 mocha.opts 中需要一个模块?【英文标题】:How can you correctly require a module in 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
,这样我就不必在每次测试中都重复它?
【问题讨论】:
【参考方案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(我)的作者的意思!以上是关于如何正确地在 mocha.opts 中需要一个模块?的主要内容,如果未能解决你的问题,请参考以下文章