Tag: 压力testing

期望失败时如何拦截错误? 茉莉花和弗里斯比

我正在用jasmine.js工作的frisby.js创buildHTTPtesting。 我也必须创build一些mongoDB对象来testing。 问题是当我想清理这些数据库对象。 当其中一个期望失败时,我想拦截并调用我自己的清理函数。 这意味着在每次失败的testing之后,我将无法从DB中删除testing对象。 在茉莉花afterEachfunction不能正常工作,茉莉花没有任何支持afterAll或beforeAll呢。 这就是为什么我今天做了testing。 it("testing userform get with correct userID and expect correct return", function() { var innerUserId = userID; frisby.create('Should retrieve correct userform and return 200 when using a valid userID') .get(url.urlify('/api/userform', {id: innerUserId})) .expectStatus(200) .afterJSON(function(userform){ // If any of these fail, the after function wont run. // I want to […]

使用多个login进行Webtesting

我有一个用node.js写的聊天室 这个聊天室使用客户端的cookie来识别用户; 这意味着当我使用Chrome浏览器以用户A的身份login聊天室时,无法以Chrome用户B的身份login聊天室。 因为服务器会发现用户A和用户B共享相同的cookie。 上面提到的这种情况的一个例子可以在http://www.e-chat.co/find。 所以我的问题是:当1000个用户同时login我的聊天室时,我怎么testing这个情况呢? (我想知道我的聊天室可以容纳的用户数量。) 我无法在浏览器中同时login多个帐户(除非我更改聊天室的结构,这不是我要做的事情)。 我发现Chrome扩展程序https://chrome.google.com/webstore/detail/multilogin/nccllfnllopfpcbjdgjdlfmomnfgnnbk允许我使用多个帐户login我的聊天室。 但手动input大量的用户帐户是一项单调乏味的工作。 是否有一种方法可以自动化input大量帐户(例如1000个)的过程?

如何使用chai和mochatestingsubprocess?

我正在创build一个框架来在特定的时间执行进程(cron-like),并testing我正在使用chai-mocha-grunt。 解决scheme的体系结构基于此示例 。 基本上,我们有: 一个主进程,通过特定的次数调用subprocess(通过child_process.fork)。 一个subprocess,它使用setInverval()来执行某些事情; 调用Master.start()函数的过程。 有了这个架构,我该如何testing,以确保线程在正确的时间使用摩卡和柴(与“断言”库)执行? 换句话说,我该如何让线程“听”线程并检查它们是否在正确的时间执行?

量angular器:步骤不是一一执行

为什么量angular器不是一个接一个的? 代码示例: browser.get('http://mywebpage.com'); element(by.css('[ng-click="fileCtrl.saveFile()"]')).click(); var today = new Date(); var todayPlus = new Date(); while(todayPlus.valueOf()<today.valueOf()+7000){ todayPlus = new Date(); } browser.driver.sleep(2000); var fs = require('fs'); var util = require('util'); var c = fs.exists('C:\\Users\\volodymyr.nabok\\Downloads\\file.txt', function(ex){ util.debug(ex ? "Yes." : "No-p"); }); 在我的情况下,量angular器首先检查'file.txt'是否存在然后下载它。 正如你看到我试图冻结脚本7秒,并冻结浏览器2秒,但没有帮助。

SailsJS Passport会话持久性问题:摩卡testing失败

我正在尝试使用Mocha,Chai和Superagent以SailsJS和Passport作为身份validation框架来编写一些基本的身份validationtesting。 以下是我的testing场景,由于某种原因,我无法保持一个持续的会话,它似乎是我的最后一个testing,看看用户是否有权访问/userplansetting/edit失败。 注意:我已经确认,当我通过networking界面login时,这是有效的。 更新:这是一个包含类似的代码和结果的回购https://github.com/robksawyer/sailsjs-starter-template request = require("superagent") crypto = require("crypto") async = require("async") chai = require("chai") expect = chai.expect should = chai.should() assert = chai.assert userStub = -> randString = crypto.randomBytes(20).toString("hex") username: randString.slice(0, 15) biography: randString + " is a auto generated user!" email: randString + "@gmail.com" password: "123123123123" displayName: "John Doe" language: "en-us" describe […]

摩卡asynchronoustesting处理错误

我试图用摩卡创build一个testing用例,但是我的代码是asynchronous的。 这很好,我可以添加一个“完成”callback函数“它”,这将正常情况下完美的罚款。 但是当试图testing负面情况时,只会使testing失败。 我想做这样的事情,但asynchronous: someObject.someMethod(null).should.equal(false) 相反,我只能testing一个callback返回,而不是testing真正发生了什么(null是无效的): it('this should return false or an error', function(done) { someObject.someMethod(null, '', done); }); 我想写这样的东西: it('this should return false or an error', function(done) { someObject.someMethod(null, '', done).should.throw(); }); 但是这会导致这个错误: "TypeError: Cannot read property 'should' of undefined" 我也尝试使用期望和断言,但同样的规则适用。 任何线索? 谢谢 编辑#1: 我没有成功尝试: 使用true / false return (true); // ok retur (false); […]

BDDtestingREST / JSON-RPC API

我使用一个混合了REST和JSON-RPC后端API的项目来开发移动应用程序。 应用程序服务器构build在node.js(express,cluster,pm2)+ redis(ioredis)+ mysql(node-mysql)+ rabbitmq(amqp)上。 现在我们面临着一个沉重的重构,但没有testing! 毫无疑问,这是一个巨大的麻烦:( 一开始,我们计划用BDDtesting来覆盖它。 这听起来很容易,但是有一个障碍,就是在testing开始之前准备好环境。 例如,一些testing会改变存储中的数据,我们必须每次都重新加载数据库转储。 坦率地说,这是非常不方便的。 而且,保持实际(最新)状态并不容易,例如当我更改代码时,我也必须更改转储。 所以,我对可用于准备数据存储状态(内容)(MySQL和Redis)的方式/工具/范例感兴趣。 提前感谢您的任何build议。

嘲笑正在testing的方法内部的一个函数

我想testing一个方法在我的代码执行一组不同的function…和其中一个内部函数被调用时,发送电子邮件。 我想要的是避免这个function在运行testing时发送电子邮件。 有没有办法做到这一点? 我想在我的代码中远离类似以下的东西: if (app.get('env') !== 'test') 我使用承诺 ,我想testing的function如下所示: var emailService = require('../path/to/custom/service.js'); // This is the method I want to test exports.sendKeyByEmail = function(email) { return _getByEmail(email) // finds a user given an email .then(function(user) { if (!user) { throw new UserNotFoundError(); } user.key = _generateKey(); // generates a random hash return user.save(); […]

用shtesting一个用户脚本

我有一个用户脚本(希望跨浏览器兼容,但目前我在Tampermonkey上运行它),我试图build立一个testing套件。 或者说,试图看看我在创build一个testing套件时采取的方法是否合理,如果我应该/可以以不同的方式做。 userscript是非常简单的:定义一堆函数,然后调用其中一个来完成它的工作。 要检查它在<a href="https://nodejs.org/">node</a> ,我想定义的function,但避免运行初始function(因为没有浏览器目前来处理DOM属性)。 所以我运行这个丑陋的shell脚本(希望相当兼容;我正在运行它): #!/bin/dash grep -ev '^\s*stuff\s*\(\s*\)\s*;?\s*($|//)' oeis-tools.user.js > test-cat.js ./getFunctions.sh >> test-cat.js cat test.js >> test-cat.js nodejs test-cat.js rm test-cat.js 所以我基本上放弃了函数被调用的那一行,用一个testing脚本来cat它,然后把它传递给节点。 在testing脚本中,我有一个类似assert的函数 function shouldBe(func, args, desiredResults) { totalTests++; tested.push(func.name); var actualResult = func.apply(null, args); if (isIn(actualResult, desiredResults)) return; console.log('Called ' + func.name + '(' + args.map(disp).join(', ') + ')'); if […]

Sinon.js在一个对象内部存储一个匿名函数

所以我正在testing我的代码,我面临一个testing在unit testing函数内部被调用的匿名函数的问题。 为什么我没有让匿名函数成为一个名为function的实例,是因为我需要closures一些匿名函数中使用的unit testing函数的variables。 举例说明: function funcBeingTested(done, arg1) { var self = this; … self.array.push({ "arguments": [ "x", "y", function (error, result) { // do some stuff with arg1… done(error, arg1); }, "z" ] }); … self.run(); // Eventually will call the anonymous function above from 'self.array' } 现在,我的问题是有没有一种方法来testing使用sinon.js匿名函数内部发生了什么? 有人可以用特定的参数作为funcBeingTested()的unit testing的一部分来调用它? 编辑:为了清除任何我想要实现的误解,我希望能够unit testing匿名函数它自己,并涵盖所有可能的分支机构,以获得100%的覆盖率。 我已经知道如何检查done()callback是否被调用,以及使用sinon.js的参数,问题是我将如何在隔离中testing匿名函数,并用特定的参数调用它以涵盖所有可能的分支。