Tag: unit testing

用Sinon保存Mongoose模型的实例方法

我试图testing一个服务函数,我用它来保存一个使用Mongoose模型的小部件。 我想在我的模型上存储保存实例方法,但是我找不出一个好的解决scheme。 我看到了其他的build议,但没有一个看起来完整。 看… 这个 , 这个 。 这是我的模特 // widget.js var mongoose = require('mongoose'); var widgetSchema = mongoose.Schema({ title: {type: String, default: ''} }); var Widget = mongoose.model('Widget', widgetSchema); module.exports = Widget; 这是我的服务… // widgetservice.js var Widget = require('./widget.js'); var createWidget = function(data, callback) { var widget = new Widget(data); widget.save(function(err, doc) { callback(err, […]

如何让grunt.js启动一个快速的应用程序进行testing

我目前的情况是,我用grunt来制作我的快速应用程序的生产版本(最小化和合并所有js / css,复制所有文件到位),然后我必须运行一个脚本,设置一个环境variables(我的应用程序只在TEST模式下运行testing工具),创build一个空的Mongotesting数据库,然后在应用程序目录中调用npm start,然后我手动运行Chrome或Phantom的testing,我想要做的是grunt设置环境variables并运行服务器,运行testing,然后停止服务器(将来如果所有的都成功了,最好也部署它)。 但是,当我尝试在咕噜声中运行该应用程序时,一旦完成,它就会停止。 我该如何让grunt启动应用程序,等待启动,然后运行testing?

我如何testingkeystonejs模型?

有什么办法可以运行testingkeystonejs也打一个testing或真正的MongoDB实例吗? 如果类似于Django的方式,那将会很好。

Nodeunit:运行时/testing函数中抛出的错误是_silent_

使用NodeUnit的一个要点是编写新的函数并经常testing它们。 问题是,如果其中一个testing函数抛出一个错误(包括JS运行时错误),错误不会显示给用户。 这里是最简单的testing用例:(注意,abcd会导致运行时错误) exports.all = { one: function( test ){ test.done(); }, two: function( test ){ as( function( err, res ){ test.done(); }); }, } function as( callback ){ process.nextTick( function() { a = testMe(); callback( null, a ); }); } function testMe(){ abcde = 100; return 10; } 但是,testMe()可能是我正在开发的一个新函数。 一个未初始化的variables,或者任何东西 ,将会沉默。

使用Sinon-Chai时,失败的testing显示“错误:超过2000ms超时”

我有以下路线(快递),我正在编写一个集成testing。 代码如下: var q = require("q"), request = require("request"); /* Example of service wrapper that makes HTTP request. */ function getProducts() { var deferred = q.defer(); request.get({uri : "http://localhost/some-service" }, function (e, r, body) { deferred.resolve(JSON.parse(body)); }); return deferred.promise; } /* The route */ exports.getProducts = function (request, response) { getProducts() .then(function (data) { response.write(JSON.stringify(data)); […]

如何用茉莉花和browserify进行unit testing?

任何最好的方式来运行浏览器风格的代码茉莉花HTML记者? 我也希望能够用phantomjs来运行这个headless,因此需要HTML记者。

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

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

尝试从unit testing连接到mongo时超时

我想写一些unit testing用逗号和mongoose来validation与mongo的数据交互。 我不想在这里嘲笑mongoose,因为我特别想validationmongo文档被创build/修改/处理的方式。 package.json被configuration为使节点模块解除locking: { "jest": { "unmockedModulePathPatterns": [ "node_modules" ] } } 在我的实际testing中,我build立了一个beforeAll()钩子来处理连接到mongo: const mongoose = require('mongoose'); describe('MyTest', () => { beforeAll((done) => { mongoose.connect('mongodb://127.0.0.1:27017/test'); let db = mongoose.connection; db.on('error', (err) => { done.fail(err); }); db.once('open', () => { done(); }); }); it('has some property', () => { // should pass but actually never […]

在摩卡testing过程中将stdout和stderr静音

我会通过承认我可能正在做一些我不应该做的事情来做序。 但是既然我已经深深的了解了,我也可以理解为什么事情会这样发生。 我正在使用摩卡来testing一些Node.js代码。 此代码使用Winston日志库,它直接调用process.stdout.write()和process.stderr.write() ( source )。 它运作良好; 我对这种行为没有抱怨。 但是,当我对这段代码进行unit testing的时候,Mochatesting运行器的输出偶尔会穿插一些日志输出行,这在一些记者( dot , bdd )中是丑陋的,而在其他记者( bdd )中是彻头彻尾的无效的。 我想在不修改或inheritanceWinston的情况下阻止这个输出,而且我想避免修改应用程序本身,如果我可以避免的话。 我到达的是一组实用函数,它们可以用一个无操作函数暂时replaceNode的内build函数,反之亦然: var stdout_write = process.stdout._write, stderr_write = process.stderr._write; function mute() { process.stderr._write = process.stdout._write = function(chunk, encoding, callback) { callback(); }; } function unmute() { process.stdout._write = stdout_write; process.stderr._write = stderr_write; } 在各种testing规范中,我直接在产生不需要的输出的任何调用或断言之前调用了mute() ,并在之后直接unmute() 。 这感觉有点不好意思,但是工作起来 – […]

如何testingConnect / Express中间件?

假设我有Connect和/或Express的中间件。 unit testing这个中间件的最好方法是什么? 当然,我可以在unit testing中设置一个http服务器,并将中间件加载到这个中。 但假设我想testing启动行为,我需要几个http服务器,很快变得复杂和不清楚(考虑在每个单独的testing中使用一个新的端口)。 有没有更好的方法,还是在真正的服务器内进行testing,最好的方法是?