Articles of 摩卡

我应该如何在摩卡unit testing中初始化一个Mongoose连接?

我一直在找这个地方。 有些人似乎这样做 mongoose.connect('mongodb://localhost/test'); 并继续他们的describe电话。 那asynchronous的等待呢? var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function (callback) { // yay! }); 我应该如何在摩卡testing中使用这个连接? 我应该把所有的testing在callback? 我应该等待连接代码在unit testing? 这个连接是否会持续describe ?

通过JSDom的JQuery不是一个赋予TypeError的函子

IO.js 1.3.0在Windows上使用带有Mocha 2.0.1的JSDOM 4.0.1和jQuery 2.1.1 以下代码: var chai = require('chai'); var jsdom = require('jsdom'); describe('JSDOM', function () { var $; beforeEach(function () { global.document = jsdom.jsdom('<html><body><section id="banner"></section></body></html>'); global.window = global.document.defaultView; global.navigator = global.window.navigator; $ = global.jQuery = require('jquery')(global.window); }) it('Using jquery', function () { var dom = $("#banner"); }); }); 当使用JQueryselect器作为函子时(例如$(…)), TypeError:object的错误不是函数 。 任何人遇到这个,并有一个解决方法?

摩卡挂钩前后不执行

我想在我的本地cassandra数据库上运行一个简单的testing来检查select语句是否从表中返回正确的logging数。 但是,放在前后块之间的代码并没有被调用。 结果我的testing简直失败了。 var assert = require('assert'); var cassandra = require('cassandra-driver'); var async = require('async'); //Connect to the cassandra cluster, assuming that the keyspace & columnspace already exists var client = new cassandra.Client({contactPoints: ['127.0.0.1'], keyspace: 'demo'}); describe('Cassandra is up and running', function() { before(function() { //Check if the connection got established successfuly client.connect(function(err) { if(err){ […]

在摩卡节点请求选项

我想在我的unit testing中提供自定义标题,目前我的unit testing是 request(sails.hooks.http.app) .post('/myurl') .send(userDetails) .expect('Content-Type', /json/) .expect(200) .end(function (err, res) { if(err) throw err; //do something }); 我想添加标题 var options = { url: 'community', headers: { 'Authorization': 'Bearer ' + authToken } }; 当我在npmjs中看到请求的文档。 它要求我提供选项来请求 request(options, callback); 我如何提供自定义标题在我的情况下,即如果我在unit testing中提供req参数作为选项对象?

Sails.js和Mocha,res.viewtesting

我为我的帆应用程序编写testing,但在控制器中有一些问题。 当用户注册时,我检查重复,如果是的话 – 渲染与错误的表单,如果没有 – 呈现与成功消息的forms。 那么谁能知道如何testing它? 或者,也许你可以build议更好的代码结构,非常感谢。 控制器: User.findOne({ email: req.body.email }, function(err, user) { if(err) return res.json(err) if(!user) { User.create({email:req.body.email, password:req.body.password}).exec(function createCB(err, user){ if(err) return res.json(err); res.view('signup', { message: 'Done, user created'}) }) } else res.view('signup', { message: 'User already exist'}) }) testing: it('should show error if duplicated user – TODO', function (done) […]

节点JS应用程序更好的devise和分离

我用express创build了一个节点应用程序。 我尝试将下面的图层分开,这将使我能够使用unit testing来testing应用程序。 问题是,我不知道如何调用将在post / get / delete应用程序中停止的router.js文件。 server.js文件如下所示 http = require('http'), app = require('./app')(), http.createServer(app).listen(app.get('port'), function (err) { console.log('Express server listening on port ' + app.get('port')); }); 这是app.js文件 var express = require('express'), logger = require('morgan'), bodyParser = require('body-parser'), routesApp = require('./ro/route'); module.exports = function () { var app = express(); app.set('port', process.env.PORT || 3005); […]

Sails js ::testing传递给视图的variables

调节器 module.exports = { index: function (req, res) { res.view({message: 'hello'}); } } 如何testingvariablesmessage是否设置正确? var request = require('supertest'); describe('HomeController', function() { describe('index', function() { it('should return success', function (done) { request(sails.hooks.http.app) .get('/') .expect(200).end(function (err, res) { if (err) throw err; res.body.should.have.property('message'); done(); }); }); }); }); res.body返回{}

unit testing结束承诺链的function

假设我在一个名为UserController的类中有一个函数,它沿着这些行( userService.createUser()返回一个promise)。 function createUser(req, res) { const userInfo = req.body; userService.createUser(userInfo) .then(function(){res.json({message: "User added successfully"})}) .fail(function(error){res.send(error)}) .done(); } 我怎样才能testing,当承诺解决, res.json()被调用,当承诺拒绝, res.send(error)被调用? 我已经尝试写这样的testing: const userService = … const userController = new UserController(userService); const response = {send: sinon.stub()}; … const anError = new Error(); userService.createUser = sinon.stub().returns(Q.reject(anError)); userController.createUser(request, response); expect(response.send).to.be.calledWith(anError); 但testing失败,“response.send永远不会被调用”。 我也试过在调用res.send(error)之前logging一些东西,并且logging发生了。 我的猜测是expect()在调用res.send(error)之前被调用,因为它是asynchronous的。 我在承诺和unit testing方面还是比较新的,这是我的架构还是我对promise的使用? 我使用Q来承诺和摩卡,柴,我的unit testing。

如何在NodeJS中testingrecursion调用的函数?

我有一个ES6 / 7编写的反复函数,由babel转换。 我有一个循环函数创build,检查是否有用户文件,使用mongoose。 // Keep checking if there is a user, if there is let execution continue export async function checkIfUserExists(){ let user = await User.findOneAsync({}); // if there is no user delay one minute and check again if(user === null){ await delay(1000 * 60 * 1) return checkIfUserExists() } else { // otherwise, […]

使用jQuery运行命令行摩卡错误

所以我有这个函数在一个文件中使用jQuery account.js: function getSession() { var session = null; $.ajax({ url: "/ajax/get_session", async: false }).done(function(data, textStatus, jqXHR){ session = data; }); return session; } 我想用Mocha在命令行上testing它。 为此我有另一个文件: testingaccount.js: var assert = require('assert'); var fs = require('fs'); var vm = require('vm'); // includes minified & uglified version, assuming mocha is run in repo root dir var path […]