Tag: 嘲弄

unit testingnode.js模型代码访问MongoDB,而不实际访问数据库

例如,我有下面的代码: var db = require('./_mongo.js'); module.exports = { check: function (cb) { var content = {}; content.collection = 'counters'; content.query = {_id: 'ping'}; content.columns = {}; db.read(content, function(err, result){ if (err) { cb(-1); } else { cb(0); } }); } }; 如何在不实际访问数据库的情况下编写“check”函数的unit testing,同时检查是否能够编写正确的传递给读取方法的“content”variables?

在testingnode.js应用程序时,什么是存根function的最佳设置?

我是Node.js的新手,并且一般来说还不熟悉JavaScript中的框架/方法。 到目前为止,我正在考虑发誓 。 具体来说,我想能够存根/模拟我的数据源。 我正在考虑两种情况: 将整个模块取出 无论出于何种原因,对整个模块进行存根操作都不起作用。 任何build议或例子,你发现最干净和最简单的方法?

嘲笑os.type()不工作

我试图unit testing一个依赖于底层操作系统的模块。 我试图使用嘲笑模拟os.type()返回基于不同的testing夹具的Linux / Windows_NT。 我正在使用摩卡作为我的unit testing框架。 我有一个描述部分,unit testing我的模块的functionA,其中有2个描述块:一个用于Windows,一个用于Linux。 设置:var reload = require(“require-reload”)(require); var module_we_test = reload('…'); var linuxOsMock = { type: function () { return "Linux"; } }; var windowsOsMock = { type: function () { return "Windows_NT"; } }; describe('#the_module_we_test', function() { before(function() { mockery.enable({ warnOnReplace: false }); }); after(function() { mockery.disable(); }); […]

如何用rewire模拟请求模块?

我有一个自定义模块tokens.js与通过npm请求模块发出请求的函数。 它看起来像这样: 'use strict'; let request = require('request'); module.exports.getToken = function(code, cb) { let url = 'some_url'; request(url, function (err, response, body) { if (err) { return cb(err); } else if (response.statusCode !== 200) { return cb('err'); } parseGetResponse(body, function (err, token) { if (err) { return cb(err); } return cb(null, token); }); }); 我想编写unit […]

unit testingExpress / Mongoose的应用程序路线,而不击中数据库

我已经阅读了堆栈溢出以下职位: unit testing与mongoose 嘲笑/ st Mong模式保存方法 我也看了mockgoose,但我宁愿使用testdouble或sinon存根/模拟我的数据库调用。 在这里find的信息可能是最接近我想要做的。 但是我无法把头围住。 我认为,区别在于我试图在api中testing路由,而不是直接testingMongoose模型。 这是我的代码: server.ts import * as express from 'express'; const app = express() import { createServer } from 'http'; const server = createServer(app); import * as ioModule from 'socket.io'; const io = ioModule(server); import * as path from 'path'; import * as bodyParser from 'body-parser'; import […]

如何在Node.js / Express中模拟MySQL(使用node-orm2)?

我用https://github.com/dresende/node-orm2使用node.js / express来使用我的MySQL数据库。 我是新来的node.js世界,我相当坚持到目前为止,我不知道如何unit testing(而不是集成testing)一个简单的function。 这里是我的server.js,加载我的用户模型(ORM) var express = require('express'), orm = require('orm'), config = require('./config/config.js'), auth = require('./services/authentication'), helper = require('./middlewares/helper.js'), friends = require('./modules/friends.js'); var app = express(); app.use(orm.express('mysql://' + config.mysql.username + ':' + config.mysql.pwd + '@' + config.mysql.host + ':' + config.mysql.port + '/' + config.mysql.db, { define: function(db, models, next) { db.load("./models/models.js", […]

NodeJS:如何为testing服务器创build一个虚假的tcp套接字

我试图unit testing我的服务器代码(非HTTP,自定义协议)。 我需要创build一个模拟双工套接字,我可以asynchronous地发送消息并接收消息。 我从事件streamreadArray和writeArray创build了一个双工stream,但是readArray需要提前写入数据,writeArray不会触发,直到stream结束。 我需要testing一段时间。 一个理想的解决scheme是将两个双工sockets连接在一起。 有没有现有的解决scheme呢? 我宁愿不必诉诸初始化一个实际的服务器来testing这个。

如何为express.static模拟http.ServerResponse和http.IncomingMessage

我没有麻烦testing自己的路由处理程序,但在这种情况下,我想testing快递的静态处理程序。 我不能为了我的生活找出它为什么挂。 显然有一些callback我失踪或一些事件,我需要发出。 我尽力做出最小的例子。 var events = require('events'); var express = require('express'); var stream = require('stream'); var util = require('util'); function MockResponse(callback) { stream.Writable.call(this); this.headers = {}; this.statusCode = -1; this.body = undefined; this.setHeader = function(key, value) { this.headers[key] = value; }.bind(this); this.on('finish', function() { console.log("finished response"); callback(); }); }; util.inherits(MockResponse, stream.Writable); MockResponse.prototype._write = function(chunk, […]