Tag: mocha

如何扩展'应该'图书馆

我想介绍应该断言图书馆,工作testing我的node.js应用程序,我的附加function。 就像这个伪代码一样 should = require "should" myExists = (obj, msg) -> # my special exist logic containSomething = (obj, msg) -> # my special assert logic should.myExists = myExists should.containSomething = containSomething describe.only "`my extra `", -> it 'should be working', (done) -> obj = {} obj.should.myExists obj.should.not.myExists obj.should.containSomething {cool:obj} obj.should.not.containSomething {cool:obj} done() 任何build议如何在实践中做到这一点?

幻影+摩卡+节点+打开网页

我正在尝试做一些非常简单的事情。 或者我想。 我想要做的就是使用phantomjs打开一个网页并声明其标题。 我正在使用mocha-phantomjs来调用我的testing运行器,如下所示: <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="../../node_modules/mocha/mocha.css" /> </head> <body> <div id="mocha"></div> <script src="../../node_modules/mocha/mocha.js"></script> <script src="../../node_modules/chai/chai.js"></script> <script> mocha.ui('bdd'); mocha.reporter('html'); </script> <script src="test.js"></script> <script> if (window.mochaPhantomJS) { mochaPhantomJS.run(); } else { mocha.run(); } </script> </body> </html> 和我的testing文件看起来 (function() { var page, url; page = require('webpage'); page = webpage.create(); url = "http://localhost:3000"; page.open(url, […]

是否有可能与摩卡testingsocket.io应用程序

我有一个Node.js与Socket.io服务器。 所以我想用摩卡书写testing来改善发展。 我已经search了很多,find有关与Mochatestingsocket.io服务器的一切,我发现是所有http://liamkaufman.com/blog/2012/01/28/testing-socketio-with-mocha-should-and- socketio客户机/ 但是在Mocha的testing目录下有服务器和testing,并且都是从Mocha开始的,当时我已经有了服务器并且只是想testing它。 所以我写了下面的代码: var assert = require("assert"), should = require('should'), io = require('socket.io-client'), socketURL = 'http://localhost:3102', options ={ transports: ['websocket'], 'force new connection': true, 'reconnection delay' : 0, 'reopen delay' : 0 }; describe('Server', function(){ var socket; beforeEach(function(done) { // Setup console.log('Establishing connection'); socket = io.connect(socketURL, options); socket.on('connect', function() { console.log('worked…'); done(); […]

Mocha MongoDB Mongoose ObjectId ref在第一个'it'语句后消失

我正在为mongoose模型写一些testing,它包含一个引用另一个模型的字段。 我运行一个before()并创build一个对象,然后运行我的testing。 在创build的callback中,我看到对象在适当的字段中有一个ID。 在第一个“it”声明中,我也看到了ID和我的testing通行证。 在每一个“it”声明中,它都消失了,并且是空的。 我发现,如果我实际上事先创build引用的对象然后该字段仍然存在。 我不认为mongoose/ mongo实际上检查所有的ObjectId引用,但如果它确实,有没有人知道如何/为什么它的作品? 如果没有,究竟是什么原因造成了这种现象呢? 消失的字段是OfficeHoursSchema中的“主机”字段。 顺便说一句,即使所需的设置为false,这仍然不起作用。 模型定义: var appointmentSchema = new Schema({ attendee: { type: Schema.Types.ObjectId, ref: "Student", required: false }, startTime: { type: Date }, duration: Number }); var statusStates = ['open','closed'] var OfficeHoursSchema = new Schema({ host: { type: Schema.Types.ObjectId, ref: "Employee" , required: true}, appointments: [appointmentSchema], description: […]

在摩卡testing中收听手表的“重新加载”事件(例如closures数据库连接)

我有这个错误: 无法连接到MongoDB! 错误:尝试打开未closures的连接。 OverwriteModelError:编译后无法覆盖Article模型。 当我使用 – –watch来运行我的摩卡testing。 这是因为testing运行器正试图重新加载应用程序(server.js),并试图重新编译模型。 我在SO上发现了几个相关的问题,但他们并不特别适用于–watch场景。

testing应该通过stream错误,失败的成功

我试图写一个摩卡testing传递stream错误,但如果stream没有错误结束失败。 检测错误是没有问题的,但总是调用完成处理程序,即使stream被强制错误。 在这段代码中, error处理程序的should.exist(err)断言可以正常工作,但是finish处理程序仍会抛出错误。 describe('catch stream errors', function() { it('should throw an error', function(done) { var stream = failStream(); stream.on('error', function(err) { should.exist(err); done(); }) stream.on('finish', function() { done(new Error('Why does this still run?')); }); stream.write(); stream.end(); }) }) 一种解决方法,看起来有点像黑客攻击,就是把一个erroredvariables放在处理程序的上面,然后把它翻到error处理程序中,并检查finish处理程序中的值。 似乎应该有一个更好的方式来处理这个问题。 var errored = false; stream.on('error', function(err) { should.exist(err); errored = true; done(); }) stream.on('finish', […]

如何testing模块中的OpenCV nodejs绑定代码?

我正在尝试opencv,我刚刚创build了一个“face finder”模块。 代码运行良好。 不过,我的摩卡testing并没有执行整个代码。 这是我的存储库: https : //github.com/scaryguy/facefinder 当我运行这个testing时: describe('FaceFinder', function() { it('should work', function() { return FaceFinder('/Users/scaryguy/arge/opencv/facefinder/test/fixtures/childFaces.jpg', '/Users/scaryguy/arge/opencv/facefinder/') }); }); 我的代码部分执行。 看看我在哪里注释了最后运行代码的行。 // https://github.com/scaryguy/facefinder/blob/master/lib/find.js Find.prototype.image = function(cb) { var img = this; cv.readImage(img.image_path, function(err, im) { if (err) return cb(err, false); // WHEN I console.log something here it's shown im.detectObject(cv.FACE_CASCADE, {}, function(err, faces) { […]

unit testing使用Mongoose Promise的MongoDB查询

我正在做一个复杂的计算,涉及从多个集合收集数据,然后处理这些数字。 为此,我正在关注TDD,并希望先写unit testing。 我知道查询数据库违反unit testing范例,我应该使用模拟对象,但我暂时我想查询数据库testing几个数字。 我试图使用Mongoose的承诺来解决NodeJS的asynchronous方面,但我无法弄清楚。 这是我的代码: (function (argument) { 'use strict'; var should = require('should'); var assert = require('chai').assert; var mongoose = require('mongoose'); var MeasureTherm = mongoose.model('MeasureTherm'); describe('Calculations Server Test', function (){ describe('Model Tests', function () { it('should find all MeasureTherms for a Program, Year and End Use', function () { var promise = […]

摩卡+ chai + jsdom-不能加载自定义模块目录

我正在使用一个多入口的应用程序,它大量使用通用组件,我从webpack中的resolve部分加载它(请参阅webpack文件) webpack文件 resolve: { extensions: ['', '.js', '.css', '.scss', '.jsx', '.json'], modulesDirectories: ['node_modules', 'common'] } 但问题是,当我要testing该组件,它不能从通用文件夹加载目录,因为我没有定义它作为模块目录,所以有没有办法加载自定义模块目录在testing环境

使用mocha chai和Nodejs错误:没有指定testing

我正尝试第一次设置摩卡和柴。 但是,当我在命令行上键入“npm run test”时收到错误消息:“未指定testing”。 在我的package.json文件中,我有: "scripts": { "start": "node server.js", "test:":"mocha –compilers js:babel-core/register –require ./test/test_helper.js –recursive" 我有一个testing文件夹在我的根与两个文件: // test/testhelper.js import chai from 'chai'; import chaiImmutable from'chai-immutable'; chai.use(chaiImmutable); // test / immutablespec.js import {expect} from 'chai'; describe('immutability', () => { describe('a number', () => { function increment(currentState){ return currentState + 1; } it('is immutable',() => { […]