Articles of 摩卡

我应该如何使用摩卡和mongoose?

运行testing时,我一直在save()方法中发生错误。 var User = require('../../models/user') , should = require('should'); describe('User', function(){ describe('#save()', function(){ it('should save without error', function(done){ var user = new User({ username : 'User1' , email : 'user1@example.com' , password : 'foo' }); user.save(function(err, user){ if (err) throw err; it('should have a username', function(done){ user.should.have.property('username', 'User1'); done(); }); }); }) }) }) 这里是错误的: […]

Node.js,Mocha,使封闭的全局variables可用

我目前正在使用Node设置一些摩卡testing,一般来说,它们都可以工作。 我现在遇到了一个我无法解决的问题。 我有一个JS文件,其中包含以下内容:MyClass.js( class MyClass + constructor: ->常规CoffeeScript输出constructor: -> ) 编辑:这是浏览器代码,我只是想使用节点来testing它。 (这甚至是可取的?) (function() { window.MyClass = (function() { function MyClass() { // Do something cool here } return MyClass; })(); }).call(this); 我现在在我的testing文件中需要MyClass.js。 一旦我运行它,它直接抛出一个错误 TESTFILE: var myclass = require('MyClass.js'); … describe('MyClass', function() { … }); 错误: ReferenceError: window is not defined. 到目前为止,我明白为什么会发生这种情况,Node中不存在窗口。 但我不能想出一个解决scheme。 我其实并不需要真正的window对象,所以我认为嘲笑它就足够了。 但是这不是… var […]

如何使用摩卡生成多个报告?

我想要有以下报告: 覆盖 规范 的xUnit 所有在我的咕噜声中执行的一个摩卡执行 目前 – 我必须运行testing3次,每次生成一个不同的报告(!)。 所以我用2个configuration的grunt-mocha-test (只有记者不同)(一次xunit-file和一次spec)。 然后我又有grunt-mocha-istanbul再次运行testing,并生成覆盖报告。 我试过使用 { options: { reporters : ['xunit-file', 'spec'] } } 对于grunt-mocha-test ,至less把它降到2,但这并不是工作。 阅读grunt-mocha-istanbul文档,我似乎无法find关于reporterconfiguration的任何信息。 我该如何解决这个问题?

在摩卡testing中使用Superagent / Supertest和Express app

我正在尝试使用Mocha为我正在开发的REST API编写testing。 我发现Superagent让我做HTTP请求。 我正在使用一个Express应用程序,我将它传递给Superagent,但是当试图以这种方式传递Express应用程序来运行这些testing时,我得到关于Mongoose的奇怪错误。 这是我的testing代码: var // Node modules mongoose = require('mongoose') , async = require('async') , should = require('should') , request = require('superagent') , app = require('../../app_mocked') , Link = mongoose.model('Link') request = request(app) describe('Links resource', function () { var userId = '50dc81654dca01006b000005' , linkId , sampleLink = { 'uri': 'http://test.com/', 'meta': { 'title': […]

引导一个摩卡testing套件

我有许多testing分布在Node JS应用程序的多个文件中。 我想在Mocha执行任何testing文件之前运行引导代码。 例如,我可以在每个实际testing中设置全局variables。 示例引导代码 global.chai = require('chai'); global.expect = chai.expect; global.sinon = require('sinon'); 看起来Mocha按字母顺序加载/testing所有文件,所以如果我将这个引导代码命名为“bootstrap.js”,并且其他所有的文件都以“B”开始,那么它就起作用了。 显然,这是脆弱和糟糕的,但是我不想把这个样板文件放在每个testing文件的顶部。 我如何告诉摩卡首先加载引导脚本,或创build一些function相当的东西?

摩卡开始平行描述

我希望能够把所有在摩卡的描述语句都平行推开。 有人可以帮我弄清楚如何做到这一点?

testing失败的承诺与摩卡的内置承诺支持

我应该怎样用摩卡和柴来testing我的诺言失败了? 我很困惑,因为我最初认为我应该使用'mocha-as-promised',但是这个包现在已经被弃用了(我正在使用mocha 2.1.0),build议只使用现在内置的promisevalidation摩卡。 请参阅: https : //github.com/domenic/mocha-as-promised 另一篇文章build议废除it()callback的“完成”参数 – 不知道为什么,因为我理解传入“done”参数是表示testing正在被asynchronoustesting的方式。 见: 我如何正确地testing摩卡和柴的承诺? 无论如何,我试图减less我的问题到下面的代码 – 请帮我修改这个,以便我可以testing我的承诺确实失败。 it.only("do something (negative test)", function (done) { var Q = require('q'); function makePromise() { var deferred = Q.defer(); deferred.reject(Error('fail')); return deferred.promise; }; makePromise() .then(done, done); });

用摩卡运行节点检查器

我似乎无法debugging摩卡脚本。 我能够像这个node –inspect script.js检查器运行节点。 这然后给了我一个url去debugging,如chrome-devtools://devtools/remote/… 但是,当我用摩卡这行mocha –inspect test.js我无法debugging。 它说'侦听器在[::]:5858'上侦听。 有没有办法让我使用节点的检查器来debugging摩卡testing? 去localhost:5858给我这个信息: Type: connect V8-Version: 5.1.281.84 Protocol-Version: 1 Embedding-Host: node v6.9.1 Content-Length: 0 使用–inspect –debug-brk没有帮助。

NodeJS超级访问会话对象

我用supertesttesting我的Node.js应用程序。 在我的控制器中,我访问会话对象。 为了提出有效的请求,这个会话对象需要填充一些数据。 调节器 // determine whether it is user's own profile or not var ownProfile = userId == req.session.user._id ? true : false; testing it('profile', function (done) { testUserOne.save(function(error, user){ request .agent(server) .get('/profile?userId=' + user._id) .expect('Content-Type', /html/) .expect(200) .expect(/Profile/) .end(done); }) }); 题 我怎样才能嘲笑的REQ /会议对象?

使用Sinon-Chai时,失败的testing显示“错误:超过2000ms超时”

我有以下路线(快递),我正在编写一个集成testing。 代码如下: var q = require("q"), request = require("request"); /* Example of service wrapper that makes HTTP request. */ function getProducts() { var deferred = q.defer(); request.get({uri : "http://localhost/some-service" }, function (e, r, body) { deferred.resolve(JSON.parse(body)); }); return deferred.promise; } /* The route */ exports.getProducts = function (request, response) { getProducts() .then(function (data) { response.write(JSON.stringify(data)); […]