Tag: 压力testing

模拟/testingMongodb数据库Node.js

我正在学习nodejs,我有一个mongodb数据库,我必须与之交互。 我目前正在考虑使用mocha作为unit testing框架,zombie.js作为验收testing框架。 我想知道我怎么能做全面的接受testing,哪些击中了mongodb数据库。 有没有一个框架/模块可以帮助用testing数据库replace数据库,或者mocha或zombie.js是否具有可以轻松替代数据库的function。 在创build数据库对象时,还有一个类似于工厂(而不是灯具)的框架。 我在rails领域遇到的一个类似的概念是在rspec中,有一个spec_helper.rb文件,它在testing运行之前运行,它设置项目configuration以决定运行testing时要打哪个数据库。 在testing运行之前,它使用database_cleaner清理testing数据库。 对于工厂来说,我曾经使用过Factory Girl来再次在rails世界中从数据库模式创build工厂对象。 谢谢

用mochatestingasynchronous函数

我想testing一个运行在node.js中的asynchronousJavaScript函数,并向http api发出一个简单的请求: const HOST = 'localhost'; const PORT = 80; http = require('http'); var options = { host: HOST, port: PORT, path: '/api/getUser/?userCookieId=26cf7a34c0b91335fbb701f35d118c4c32566bce', method: 'GET' }; doRequest(options, myCallback); function doRequest(options, callback) { var protocol = options.port == 443 ? https : http; var req = protocol.request(options, function(res) { var output = ''; res.setEncoding('utf8'); res.on('data', function(chunk) […]

TDD /使用NodeJS中的stream进行testing

我一直在试图find一个合理的方式来testing使用stream的代码。 有没有人find一个合理的方法/框架来帮助testing在nodejs中使用stream的代码? 例如: var fs = require('fs'), request = require('request'); module.exports = function (url, path, callback) { request(url) .pipe(fs.createWriteStream(path)) .on('finish', function () { callback(); }); }; 我目前testing这种types的代码的方式要么涉及简化与代码stream,以便我可以抽象出一个未经testing的代码块或通过这样写: var rewire = require('rewire'), download = rewire('../lib/download'), stream = require('stream'), util = require('util'); describe('download', function () { it('should download a url', function (done) { var fakeRequest, fakeFs, FakeStream; […]

(Angularjs)Web应用程序的集成testing

我正在开发一个Web应用程序。 它由2部分组成。 一个节点rest服务器和一个angularjs客户端。 该应用程序的结构如下:Rest Server < – > Api Module < – > Angular App 服务器目前正在testing中。 我有unit testing和集成testing。 集成testing正在访问一个真实的数据库,并通过http调用其余的api。 我认为这是服务器testing所能达到的最高水平。 集成testing也运行得很快。 我非常有信心,我testing服务器的方式足以满足我的使用情况,我对结果感到满意。 不过,我正在努力如何testingangularjs应用程序。 我有相关指令和模块的unit testing。 写这些不是一个问题。 我想编写涵盖用户场景的集成testing。 类似注册场景:用户访问网站,进入registry单,并提交表单与数据。 angularjs团队正在从ng场景转移到量angular器 。 量angular器使用Selenium来运行testing。 因此有两个范围:应用范围和testing范围。 现在我可以想到我可以使用的三种不同的抽象。 而我不确定哪一个最适合我。 模拟Api模块 嘲笑其余的服务器 使用完整的服务器 模拟Api模块 在这种情况下,我不需要设置服务器。 所有的交互都在浏览器中运行 优点: 没有服务器是必要的 坏处: API是在浏览器范围内,我不得不篡改这一点。 我真的很喜欢这个解决scheme,但是我觉得很难嘲笑Api。 Api需要在浏览器范围内修改。 因此我需要将testing的修改发送到浏览器。 这可以做到 ,但是我没有看到如何在testing范围内运行断言如mockedApi.method.wasCalledOnce() 嘲笑其余的服务器 优点: 客户将保持不变 只有一个范围来处理 坏处: 一个必须build立rest路线 […]

如何以编程方式closuresExpressJS的实例进行testing?

我想弄清楚如何closuresExpress的一个实例。 基本上,我想要.listen(port)调用的反向 – 我如何获得一个Express服务器停止监听,释放端口,并干净关机? 我知道这似乎可能是一个奇怪的查询,所以这里是上下文; 也许还有另一种方法来解决这个问题,我正在考虑错误的方式。 我正在尝试为我的socket.io/nodejs应用程序设置一个testing框架。 这是一个单页面的应用程序,所以在我的testing脚本(我使用摩卡 ,但这并不重要),我想能够启动服务器,运行testing,然后closures服务器。 我可以通过假设服务器在testing开始之前打开,或者通过其中一个testing启动服务器,并且随后的每个testing都假定它已经启动,但是这真的很混乱。 我更愿意让每个testing文件都以适当的设置启动一个服务器实例,然后在testing结束时closures这个实例。 这意味着没有奇怪的依赖运行testing,一切都是干净的。 这也意味着我可以做启动/关机testing。 那么,有关如何做到这一点的任何build议? 我曾经想过手动触发exception来使它失效,但这似乎很混乱。 我已经挖掘了快速文档和来源,但似乎无法find任何方法,将closures服务器。 在socket.io中也可能有这样的一些东西,但是由于套接字服务器只连接到了Express服务器,所以我认为这需要在快速层进行。

node.js与ASP.NET Core性能testing的意外结果

我正在用node.js和asp.net-core编写的两个(有点)hello世界项目做一个快速压力testing。 他们都在生产模式下运行,没有logging器连接到他们。 结果是惊人的! 即使在做了一些额外的工作之后,ASP.NET核心的performance也优于node.js应用,而node.js应用只是渲染一个视图。 应用程序1: http://localhost:3000/nodejs node.js 使用 :node.js,express和vash渲染引擎。 这个端点的代码是 router.get('/', function(req, res, next) { var vm = { title: 'Express', time: new Date() } res.render('index', vm); }); 正如你所看到的,除了通过timevariables发送当前date到视图之外,它什么都不做。 应用程序2: http://localhost:5000/aspnet-core asp.net core 使用 :ASP.NET核心,默认模板定位dnxcore50 然而,这个应用程序不只是呈现一个页面上的date。 它生成5段各种随机文本。 理论上这应该比nodejs应用稍微重一点。 这是渲染这个页面的动作方法 [ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)] [Route("aspnet-core")] public IActionResult Index() { var sb = new StringBuilder(1024); […]