Articles of 摩卡

NodeJstesting用例的代码,用于每个数组的方法

这里的文件是一个数组像var files = ['/tmp/1.pdf','/tmp/2.pdf']; 方法: var createAttachmentsForMail = function (files) { var attachmets = []; files.forEach(function (value) { attachmets.push( { "Content-type": mime.lookup(value), "FileName": path.basename(value), "content": new Buffer(fs.readFileSync(value)).toString('base64') } ); }); return attachmets; }; testing方法: 我想testingattachment.push被调用2次,但是怎么样? 我也想断言附件是什么回报。 describe("Create attachments", function() { it('from pdf path', function() { var files = [ '/tmp/1.pdf', '/tmp/2.pdf' ]; sinon.stub(fs, "readFileSync"); sinon.stub(files); […]

在Mocha中使用EJStesting渲染视图

我已完成20个testing通过构build一个CRUD应用程序。 我正在使用EJS来渲染视图,现在我的testing有问题。 作为一个简单的例子,假设我正在检查是否发送了一个GET请求发送给'/' ,JSON将被发送像res.json({message:'hello'})所以我可以设置我的testing在摩卡这样res.body.message相当于'你好'。 但是,如果我想呈现index.ejs页面而不是发送JSON。 所以它看起来像res.render('index',{message:'hello'}) 。 我如何testingres.render() ? 或者更具体地说,我如何testing传递给res.render()的对象? 编辑:解决这个问题(和这种问题)可以通过使用称为functiontesting的testing范例解决。 去谷歌上查询。

nodejs – testing失败,但callback被调用

我有一个模块,我出口,其中有一个方法editHeroImage我试图用mocha , chai和sinon 。 模块有两个作为参数, connection和queries传递的对象。 这些是mySql对象,其中一个包含到数据库的连接,另一个包含在其单独模块中定义的查询string。 我正在导出并试图testing的expObj是一个“帮手”模块。 我已经成功地testing了这个模块的其他方法,就像我试图testing这个方法一样,但是当我遇到由于某种原因而使用async模块的方法时,我的testing不再像预期的那样工作。 我想知道是否在这种特殊情况下丢失了某些东西,因为我testing了其他模块和方法,这些模块和方法也使用了async ,并没有遇到这种情况。 当我运行testing时,它会logging“HELLO!” 如预期的那样,但是已经调用callbackSpy的断言失败。 我在这里失去了主意! 请帮忙! 到底是怎么回事? 试衣服之间是否会有污染? testing方法: expObj.editHeroImage = function(connection, queries, postId, postData, callback) { async.waterfall([ function(next) { var qString = queries.getSinglePostById(); connection.query(qString, [postId], function(err, results) { if (err) { return next(err); } if (!results.length) { console.log('NO POST FOUND WITH ID ' + postId); […]

Nodejs摩卡unit testingsqlite3callback未调用插入未执行

我想为我的应用程序创buildunit testing。 当通过浏览器调用API时,API工作得很好,但是当我想要执行testing时,无论是使用npm test还是mocha test,都不会调用callback函数,也不会执行INSERT语句。 我没有错误。 码: unit testing文件: process.env.NODE_ENV = 'test'; var chai = require('chai'); var chaiHttp = require('chai-http'); var server = require('../server/server'); var Const = require("../config/const.js"); var should = chai.should(); chai.use(chaiHttp); var assert = chai.assert; var column1value = "1234567890123456" describe('All', function() { it('Insert',function(done) { chai.request(server) .post('/' +Const.SERVER_NAME + '/insert') .set('content-type', 'application/x-www-form-urlencoded') .send({param1: column1value, […]

Zombie.js错误:超时:没有得到加载在这个页面上的所有资源

我有一个问题,其中Zombie.js抛出一个错误Error: Timeout: did not get to load all resources on this page 。 它总是超级随机的,似乎总是在不同的testing中发生。 我曾经有以下的代码行来防止这个问题。 Browser.waitDuration = '60s'; 问题是最近Stripe.js导致这个问题,我的unit testing花了额外的55秒。 看到这个问题 。 所以Stripebuild议我删除该行。 当然,我的testing开始再次运行得更快。 但是我已经忘记了我添加了这一行来防止这个超时错误。 任何想法如何解决这个问题,同时确保我的unit testing不会花费过长的时间?

使用Mocha和Sequelizetesting模型

我想使用Sequelize作为ORM和Mocha / Chai进行unit testing来testingmysql数据库上的CRUD操作。 我testing了插入/删除logging使用HTTP路由,但我会直接testing模型,而不使用任何http连接。 我试图做到这一点,但是当我启动testinglogging不会被添加,我不会收到任何错误。 应用程序/模型/ article.js module.exports = function (sequelize, DataTypes) { var Article = sequelize.define('Article', { title: DataTypes.STRING, url: DataTypes.STRING, text: DataTypes.STRING }, { classMethods: { associate: function (models) { // example on how to add relations // Article.hasMany(models.Comments); } } }); return Article; }; 应用程序/模型/ index.js var fs = require('fs'), path […]

如何模拟客户端中止

我被困在我的一个testing中。 在我的testing中,我需要检测客户端(浏览器)已经取消或中止图片上传。 我的问题是如何模拟连接中止的时间。 在我的控制器中,我可以模拟连接丢失,并且我的代码正确地反应。 但正如我所提到的问题仍然是如何从testing中触发。 我使用摩卡3.2.0作为testing套件,而在控制器端我使用多方 。 这是原始的代码: return new Promise((resolve, reject) => { let form = new multiparty.Form(); let fileCount = 0; form.on('part', function (part) { fileCount++; let tmpFile = path.join(os.tmpDir(), `${userId}_${timePrefix}_${path.basename(part.filename)}`); part.pipe(fs.createWriteStream(tmpFile)); part.on('end', () => { resolve(fs.createReadStream(tmpFile)); }); part.on('error', function (error) { reject(error); }); }); form.on('error', (error) => { reject(new LogicalError( `Image input […]

摩卡js与反应js

我正在尝试使用摩卡js编写testing脚本来处理我的反应代码。 testing助手文件就像这个browser.js var baseDOM = '<!DOCTYPE html><html><head><meta charset="utf-8"></head><body></body></html>'; var jsdom = require('jsdom').jsdom; global.document = jsdom(baseDOM); global.window = document.defaultView; if ( global.self != null) { console.log(' global.self >>>>> ' + global.self); } else { global.self = global.this; } global.navigator = { userAgent: 'node.js' }; testing脚本就像这样(component.specs.js) 'use strict'; import ReactDOM from 'react-dom'; import React from 'react'; import […]

如何testing用sinon.spy调用的socket.io事件

首先,我试图第二次testing被调用的函数返回正确的值。 更具体地说,我试图第二次testingsocket.on()返回正确的值。 我知道Sinon.spy()可以检测一个函数是否被调用。 但它似乎不适用于socket.io事件。 我试图testing例如, var socketio = io.connect(someUrl); socketio.on(eventName, cb); 如果'eventName'被调用。 我试过了 var spy = sinon.spy(socketio, 'on'); assert(spy.withArgs(eventName).called); 但它说,这是从来没有被称为。 此外,例如,如果我想在callback函数中testing数据是正确的还是不正确的 var socketio = io.connect(someUrl); socketio.on(eventName, function(data) { data.should.equal(something); }); 有没有可能testing? 更新: 我通过在callback中添加一个计数来解决问题 var count = 0; socketio.on(eventName, function(data) { count++; if(count === 2) { data.should.equal(something) } } 但是我认为这是一个很不方便的方法,有没有什么标准/明智的方法来做到这一点(如果可能的话,用sinon)?

在摩卡testing中可以使用ES6模块吗?

ES6,Windows 10 x64,Node.js 8.6.0,摩卡3.5.3 在摩卡testing中可以使用ES6模块吗? 我有export和import关键字的问题。 /* eventEmitter.js */ /* Event emitter. */ export default class EventEmitter{ constructor(){ const subscriptions = new Map(); Object.defineProperty(this, 'subscriptions', { enumerable: false, configurable: false, get: function(){ return subscriptions; } }); } /* Add the event listener. * @eventName – the event name. * @listener – the listener. */ addListener(eventName, […]