Questions tagged «mocha»

Mocha.js是在Node.js和浏览器上运行的功能丰富的JavaScript测试框架。

8
NodeJS UnhandledPromiseRejection警告
因此,我正在测试依赖于事件发射器的组件。为此,我想出了将Promises与Mocha + Chai结合使用的解决方案: it('should transition with the correct event', (done) => { const cFSM = new CharacterFSM({}, emitter, transitions); let timeout = null; let resolved = false; new Promise((resolve, reject) => { emitter.once('action', resolve); emitter.emit('done', {}); timeout = setTimeout(() => { if (!resolved) { reject('Timedout!'); } clearTimeout(timeout); }, 100); }).then((state) …

9
使用mocha和node.js对私有功能进行单元测试
我正在使用Mocha以便对为node.js编写的应用程序进行单元测试 我想知道是否可以对模块中未导出的功能进行单元测试。 例: 我在其中定义了很多功能 foobar.js function private_foobar1(){ ... } function private_foobar2(){ ... } 以及一些作为公共导出的功能: exports.public_foobar3 = function(){ ... } 测试用例的结构如下: describe("private_foobar1", function() { it("should do stuff", function(done) { var stuff = foobar.private_foobar1(filter); should(stuff).be.ok; should(stuff)..... 显然,这是行不通的,因为private_foobar1没有导出。 对私有方法进行单元测试的正确方法是什么?摩卡咖啡有内置的方法吗?

5
如何以编程方式关闭ExpressJS实例进行测试?
我试图弄清楚如何关闭Express实例。基本上,我想跟.listen(port)电话相反-如何让Express服务器停止监听,释放端口并干净地关机? 我知道这似乎是一个奇怪的查询,所以这里是上下文;也许还有另一种方法可以解决这个问题,而我正在考虑错误的方法。我正在尝试为我的socket.io/nodejs应用设置测试框架。这是一个单页应用程序,因此在我的测试脚本中(我正在使用Mocha,但这并不重要)我希望能够启动服务器,针对它运行测试,然后关闭服务器。我可以通过假设在测试开始之前打开服务器电源,或者通过其中一个测试启动服务器,然后让每个后续测试都假设它已启动来解决此问题,但这确实很麻烦。我更希望每个测试文件使用适当的设置启动服务器实例,然后在测试结束后关闭该实例。这意味着运行测试没有任何怪异的依赖关系,并且一切都很干净。这也意味着我可以进行启动/关闭测试。 那么,有关如何执行此操作的任何建议?我曾考虑过手动触发异常以降低异常,但这似乎很混乱。我已经研究过Express文档和源代码,但似乎找不到任何可以关闭服务器的方法。为此,socket.io中可能还包含一些内容,但是由于套接字服务器只是连接到Express服务器,因此我认为这需要在Express层进行。

4
使用Mocha测试javascript-如何使用console.log调试测试?
我正在使用JavaScript测试运行程序“摩卡”。 我的测试失败了,因此我将使用进行调试console.log。 但是运行测试时,没有输出(仅Mocha的测试结果)。看来Mocha已捕获并抑制了我的console.log输出! 如何让Mocha显示输出?(对于失败的测试)? 编辑: 抱歉!- console.log在测试期间可以正常工作!我肯定一直期望它抑制输出,而且我没有正确检查自己的代码。感谢您的回应。那么...话虽如此...也许抑制通过测试的输出实际上会很好吗?嗯... 相关说明:我想使用,console.log因为尝试获取Eclipse调试器连接到node.js时遇到很多麻烦。 我是唯一发现这一难题的人吗?你们如何调试node.js?用调试器还是用console.log语句?

6
Mocha API测试:收到“ TypeError:app.address不是函数”
我的问题 我已经编写了一个非常简单的CRUD API,并且最近开始使用编写了一些测试代码chai,chai-http但是使用进行测试时遇到了问题$ mocha。 当我运行测试时,在外壳上出现以下错误: TypeError: app.address is not a function 我的密码 这是我的一项测试(/tests/server-test.js)的示例: var chai = require('chai'); var mongoose = require('mongoose'); var chaiHttp = require('chai-http'); var server = require('../server/app'); // my express app var should = chai.should(); var testUtils = require('./test-utils'); chai.use(chaiHttp); describe('API Tests', function() { before(function() { mongoose.createConnection('mongodb://localhost/bot-test', myOptionsObj); …


17
运行Mocha测试时Babel意外导入令牌
我的项目中已经实现了其他相关问题中提供的解决方案,例如在.babelrc中包含正确的预设(es2015)。 我有两个项目(让它们分别称为A和B)都使用ES6模块语法。在项目A中,我将导入通过npm安装的项目B,该项目位于node_modules文件夹中。当我为项目A运行测试套件时,出现错误: SyntaxError:意外的令牌导入 在此之前,项目B声称存在以下错误代码行: (函数(导出,需求,模块,__ filename,__ dirname)){从'history / lib / createBrowserHistory'导入createBrowserHistory; Iife似乎与npm或可能与babel有关,因为我的源文件仅包含“从'history / lib / createBrowserHistory'导入import createBrowserHistory”;项目B的测试套件中的单元测试运行良好,并且如果我将Project B作为依赖项从项目A,然后是我的测试套件(仍然对内部项目模块使用es6导入)就可以了。 全栈跟踪: SyntaxError: Unexpected token import at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Module._extensions..js (module.js:405:10) at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:138:7) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at require (internal/module.js:12:17) …

1
使用Mocha进行Javascript测试时assert.equal和assert.deepEqual之间的区别?
我正在使用Mocha在Express.js应用程序中测试一个小模块。在此模块中,我的函数之一返回一个数组。我想测试数组对于给定的输入是否正确。我这样做是这样的: suite('getWords', function(){ test("getWords should return list of numbers", function() { var result = ['555', '867', '5309']; assert.equal(result, getWords('555-867-5309')); }); }); 运行此命令时,出现以下断言错误: AssertionError: ["555","867","5309"] == ["555","867","5309"] 但是,当我将测试更改为时assert.deepEqual,测试可以顺利通过。我想知道是否是==vs 的情况===,但如果我输入 [1,2,3] === [1,2,3] 进入node.js命令行,我仍然会得到false。 为什么数组不比较其他值的方式(例如1 == 1)?assert.equal和assert.deepEqual有什么区别?

6
JavaScript标准样式无法识别摩卡
我有一个看起来像这样的Mocha测试文件: var expect = require('chai').expect var muting = require('../muting') describe('muting', function () { describe('init()', function () { it('should inject an object into twitter', function () { var twitter = 'twitter' muting.init(twitter) expect(muting.twitter).to.equal(twitter) }) }) }) 当我mocha从CLI运行时,它将成功运行测试。 当我运行standard(JavaScript Standard Style的可执行文件)时,我在Mocha的框架函数中遇到如下错误: standard: Use JavaScript Standard Style (https://github.com/feross/standard) c:\..\test\index.js:5:0: 'describe' is not defined. …
91 javascript  mocha 


4
如何安装和运行Mocha(Node.js测试模块)?安装后出现“ mocha:找不到命令”
我在让Mocha按预期工作时遇到了麻烦,我很乐意按照文档所述说,但是(似乎)没有多少文档可以实际使事物运行。 我已经使用npm(全局和本地)安装了它,每次运行它都会得到: $ mocha mocha: command not found 好的,所以我认为它不在我的中PATH,所以我尝试直接运行它, $ ./node_modules/mocha/bin/mocha execvp(): No such file or directory 最后,我尝试打另一个bin文件,然后得到 $ ./node_modules/mocha/bin/_mocha path.existsSync is deprecated. It is now called `fs.existsSync`. . ✔ 1 tests complete (1ms) 如何只用一个命令执行测试?Vows似乎允许您,但是我听说Mocha是更好的选择,我似乎无法使其正常工作。 对我在第三次尝试中遇到的错误有任何想法吗? 编辑: 我在跑, Ubuntu 11.10 64位 Node.js 0.7.5 npm 1.1.8 摩卡咖啡0.14.1 应该0.6.0
89 node.js  mocha 


6
使用mocha.js加入来自多个文件的测试
我试图将来自多个文件的所有测试合并到一个文件中,如下所示: describe('Controllers', function() { describe('messages.js', function() { require('./controllertests/messages').test(options); }) describe('users.js', function() { require('./controllertests/users').test(options); }) }) 我很确定这不是参加测试的最佳方法,我很难理解如何执行此操作的示例:


10
带有额外选项或参数的Mocha测试
我正在使用Mocha为Node.js应用程序编写测试用例。测试用例需要一个API密钥作为额外的输入选项或参数。API密钥是私有的,因此我不希望将其直接包含在测试文件中,因为每个人都可以在GitHub上看到它。我知道Mocha有一些可用的选项: http://mochajs.org/#usage 但是是否可以包含一些参数,以使测试人员在命令行中为测试指定自己的API密钥?如: ./node_modules/mocha/bin/mocha test/*.js --key YOUR_KEY
83 node.js  mocha 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.