Articles of 摩卡

摩卡,快速testing错误 – “毕竟”钩错误 – 对象函数没有方法“closures”

我刚刚开始使用摩卡,testing一个非常基本的Express 4.0 rest API。 describe('API CALL UNIT TESTING', function(){ var app = require('../../app'); before(function(){ app.listen(3000); }); describe('GET', function(){ it('respond with json', function(done){ request(app) .get('/api/compile') .set('Accept', 'application/json') .expect('Content-Type', 'application/json') .expect(200, done) .end(function(e, res){ //console.log(res) done(); }) }) }); after(function() { app.close(); }); }); 运行testing时,我得到以下错误: 1通过(48ms)1失败 1)API CALL UNIT TESTING“毕竟”挂钩:TypeError:对象函数(req,res,next){app.handle(req,res,next); }没有方法“closures” 任何人都可以build议是什么导致“毕竟”钩错误?

节点摩卡柴asynchronous – 一切都传递,即使它应该失败

我试图教自己使用一个testing框架来自动化testing,而不是手动完成。 经过一些试验和错误,我终于得到了unit testing开始传递…但现在,我的问题是一切都传递,不pipe是否应该。 目前我有以下代码: describe('create {authName, authPW}', function() { it('no name', function() { init({ path: ':memory:', callback: function() { var arg; arg = {}; //arg['authName'] = 'Name'; arg['authPW'] = 'Pass'; arg['callback'] = function(r) { // r.should.equal('create error'); r.should.equal('foobar'); done(); }; create(arg); } }); }); }); 正如你所猜测的那样… r不应该等于'foobar' 我在这里做错了什么?

Sails.js:哪些模块用于unit testing?

我是sails.js和node.js的新手 我试图弄清楚设置unit testing的最佳方法是什么。 例如,在Kraken.js中,生成时已经有一个testing/文件夹设置,它看起来像使用摩卡。 但是,没有像这样预先包装sails.js。 我想知道什么是最好的方式来构build它,我需要添加依赖关系(我应该使用业力,茉莉花,摩卡,量angular器,…),以及如何自动化一切(即运行所有testing使用“grunttesting”我想,或者我应该在每个“npm start”运行testing…?) 你如何在你的sails.js环境中设置unit testing?

摩卡beforeEach在一套房正在运行另一套房

我有两个testing套件(我使用摩卡的TDD UI,它使用suite() ,test()而不是describe()和it() ): suite('first suite'), function(){ …. }) suite('second suite', function(){ beforeEach(function(done){ console.log('I SHOULD NOT BE RUN') this.timeout(5 * 1000); deleteTestAccount(ordering, function(err){ done(err) }) }) … }() 运行mocha -g 'first suite只运行mocha -g 'first suitetesting,但运行beforeEach,打印I SHOULD NOT BE RUN在控制台上I SHOULD NOT BE RUN 。 我怎样才能使beforeEach()只运行在它所包含的套件? 注意 :我可以解决这个问题: beforeEach(function(done){ this.timeout(5 * 1000); if ( this.currentTest.fullTitle().includes('second suite') […]

Nodejs类与variables

我有这个parsing器类在一个文件中: module.exports = function Parser() { this.myVar = ""; var parse = function (inputString) { this.myVar = "somethingAfterParse"; } return { initWithString: function(inputString) { parse(inputString) }, name: this.myVar }; }; 然后,在“main”文件js中,我使用这样的parsing器: var Parser = require("./Parser.js"); var parserInstance = new Parser(); parserInstance.initWithString("somestring"); console.log("Parser var:", parserInstance.myVar); 没有错误,但日志打印一个空的名字..为什么?

使用webpack的require.ensure函数为javascript模块编写testing

我在我的服务器上运行摩卡testing,testing源脚本是一种单独的unit testing方式。 我正在testing的一个脚本调用了Webpack的require.ensure函数,这个函数在被Webpack绑定的时候在应用程序中创build代码分割点是非常有用的。 我为这个脚本编写的testing不在Webpack上下文中运行,因此require.ensure函数不存在,testing失败。 我试图为这个函数创build一些polyfill / stub / mock / spy,但是没有任何运气。 有一个包, webpack-require ,它允许创build一个webpack上下文。 这可以工作,但速度慢得令人难以接受。 我宁愿有一些直接针对require.ensure函数的轻量级require.ensure 。 任何build议? 🙂 这是一个非常基本的摩卡testing起点。 摩卡testing加载一个包含方法的人工模块,如果require.ensure被定义,则返回true。 foo.js export default { requireEnsureExists: () => { return typeof require.ensure === 'function'; } }; foo.test.js import { expect } from 'chai'; describe('When requiring "foo"', () => { let foo; before(() => { foo […]

严格的平等是否保证了平等

我开始用Mocha为我的nodeJS / Javascript应用程序编写unit testing。 对于我的平等主张testing,我决定使用 assert.strictEqualtesting相等 assert.notEqualtesting差异 这背后的想法是强制使用严格的相等运算符( ===和!== ),但要确保如果使用==和!=则不会产生错误。 但是这引起了我一个问题: 对于每一个可能的a做a === b意味着a == b并且做a !== b意味着a != b ?

MochaJS:如何在testing之间共享断言/“它('应该')”代码

我有一些使用NodejstestingWeb服务器的摩卡testing。 许多testing应该会导致服务器返回错误,例如400错误请求。 目前的testing是以下代码的许多副本: it('should respond with 400 (Bad Request)', function (){ expect(httpResponse.statusCode).to.equal(httpstatus.BAD_REQUEST); }); 这是一个简化的伪代码示例: describe('When passing bad JSON data', function(){ var response before(function(done){ callUrlToInsert(url, badJson, function(err, resp){ response = resp done() } } it('should respond with 400 (Bad Request)', function (){ expect(httpResponse.statusCode).to.equal(httpstatus.BAD_REQUEST) }) } 这使我感到困惑,因为作为一名程序员,我尽可能避免了重复的代码。 但是,把它放到一个函数中是行不通的。 function verifyItReturnedBadRequest400(httpResponse) { it('should respond with 400 (Bad Request)', […]

摩卡范围function未定义

我目前正在浏览一些使用Javascript的TTD教程,并且有一个似乎是Javascript而不是TTD问题的东西。 即,我有以下testing: 'use strict'; var chai = require('chai'); var expect = chai.expect; var sinon = require('sinon'); var orderSystemWith = require('../lib/orders'); //describe is used to display features //context is used to display scenarios //it is used to describe tests within a feature/scenario describe('Customer displays order', function () { beforeEach(function(){ this.orderDAO = { byId: sinon.stub() }; this.orderSystem […]

确保服务器应用程序在摩卡testing开始之前运行

这与在每次摩卡testing之前确保快速应用程序运行相似,但指定的解决scheme仍然无法正常工作+我正在使用websocket服务器 总之,我使用一个名为socketcluster的websocket框架,这是我的服务器文件 import {SocketCluster} from 'socketcluster'; const socketCluster = new SocketCluster({ workers:1, brokers:1, port: 3000, appName:null, initController: __dirname + '/init.js', workerController: __dirname + '/worker.js', brokerController: __dirname + '/broker.js', socketChannelLimit: 1000, crashWorkerOnError: true }) export default socketCluster 运行node server.js启动worker.js中指定的工作进程 export const run = (worker) => { console.log(' >> worker PID: ',process.pid); const app = express(); const […]