Tag: 压力testing

Jesttesting简单的香草JavaScript – 不能读取null的属性'addEventListener'

我试图用Jest和Node.js来testing我的应用程序。 使用JestJS运行testing时,避免在terminal中出现以下错误的正确设置是什么? 无法读取null的属性“addEventListener” sum函数的testing通过我注释掉在app.js文件中添加事件监听器。 我甚至不知道为什么这行以及由Jest执行的console.log('Not part…') ,因为我只导出sum函数。 我的index.html文件的内容: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <button id="button">JavaScript</button> <script src="./app.js"></script> </body> </html> 我的app.js文件的内容: function sum(a, b) { return a + b; } console.log('Not part of module.exports but still appearing in terminal, why?'); var button = document.getElementById('button'); button.addEventListener('click', function(e) { console.log('button was clicked'); }); module.exports […]

使用AVA进行dynamictesting

我期待运行ava programmaticaly,所以我的脚本将能够运行一些dynamic参数(实际上是一个url)的avatesting。 我的目标是运行programmaticaly在dynamic(来自用户input)URL的列表上的相同的AVAtesting文件,然后,取回输出。 我知道ava api是一个很好的起点,但是我可以看到官方的gulp-ava不使用这个API,API的用法对我来说还不清楚。 所以,TL; DR: 我如何从我自己的nodejs脚本运行avatesting文件? 我怎样才能从我的脚本传递一个dynamic参数到avatesting文件? 我怎样才能找回来自AVA的输出? 谢谢, 汤姆

如何在运行时使用node-config覆盖configuration值?

我想在testing时重写一些值,特别是将http服务的重试设置为1(立即失败,不重试)。 我们的项目使用node-config 。 根据文档我可以用NODE_CONFIG envvariables覆盖: node myapp.js –NODE_CONFIG='{"Customer":{"dbConfig":{"host":"customerdb.prod"}}}' 那么我宁愿在我的testing中这样做,但不是所有的testing。 代码说你可以通过设置ALLOW_CONFIG_MUTATIONS来允许configurationALLOW_CONFIG_MUTATIONS 。 process.env.ALLOW_CONFIG_MUTATIONS = "true"; const importFresh = require('import-fresh'); importFresh("config"); process.env.NODE_CONFIG = JSON.stringify({httpServices:{integration:{enrich: {retryInterval: 1, retries: 1}}}}); expect(process.env.NODE_CONFIG, 'NODE_CONFIG not set').to.exist(); expect(process.env.NODE_CONFIG, 'NODE_CONFIG not set').to.match(/retryInterval/); expect(process.env.ALLOW_CONFIG_MUTATIONS, 'ALLOW_CONFIG_MUTATIONS not set').to.equal("true"); const testConfig = require("config"); console.dir(testConfig.get("httpServices.integration.enrich")); expect(testConfig.get("httpServices.integration.enrich.retryInterval"), 'config value not set to 1').to.equal(1); 结果: { url: 'https://internal-**********', retryInterval: […]

如何增加页面加载的goto超时?

TL;博士; 我需要增加这个超时: 命令| 命令`test`在[32.585s]之后以错误结束 命令| BackstopExcpetion:未定义的testing#1:GotoTimeoutError:goto()超时 考虑以下服务器代码: const http = require('http'); const hostname = '0.0.0.0'; const port = 3000; http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/html'); res.end(`<!DOCTYPE html> <title>Test Page</title> <script>console.log("Hello world!")</script> <h1>Hello world!</h1> `); }).listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); 和4 * 3 = 12testing的BackstopJSconfiguration: { "id": "backstop_default", […]

如何编写特殊testing用例的可testing代码

我有一个asynchronousreadFile(path,callback)函数。 它第一次读取文件时,会从文件系统中读取文件。 它会将内容保存到内存中。 之后当相同的文件被读取时,它只是从内存中返回内容而不是再次打开文件系统。 我遇到的问题是如何testing这种机制在testing套件中的工作,因为方法调用无法知道内容是从文件系统还是内存中返回。 我如何实现readFile(),所以它的cachingfunction是可testing的?

在Express.js中redirect后调用下一个中间件

我正在通过Express.js中间件的集成testing来驱动行为。 我遇到了一个有趣的情况,在应用程序背后的行为是不可预测的(不是由我,无论如何)。 作为一个简单的例子: var middlewareExample = function(req, res, next){ if(req.session){ refreshSession(req.session, function(err, data){ if(!err){ res.redirect('/error'); } }); next(); }else{ res.redirect('/authenticate'); } }; 问题在于next的redirect,因为它在内部函数和条件之外。 我不确定Express是如何将中间件/路由调用处理为next或res.redirect如果它们恰好发生在彼此之前或之后,如上所述。 手动testing没有发现任何奇怪的行为,超级模块也没有。 我想知道Express是否以及如何回应这种情况。 另外,supertest可以用来揭露任何潜在的不良行为。 另外,如果可以的话,我想听听别人用什么方法来testingNode / Express中间件。

摩卡没有显示所有的testing

我有一些摩卡unit testing,当我运行这些只有2/3的testing显示。 我正在使用斑点记者,并通过运行我的testing。 这是我的makefile: REPORTER = list TESTS = test/*.js test/**/*.js test/**/**/*.js REQUIRE = should test: @NODE_ENV=test NODE_PATH=./app/controllers ./node_modules/.bin/mocha \ –reporter $(REPORTER) \ –ui tdd \ –require $(REQUIRE) \ -G \ $(TESTS) test-ci: @NODE_ENV=ci NODE_PATH=./app/controllers ./node_modules/.bin/mocha \ –reporter $(REPORTER) \ –ui tdd \ –require $(REQUIRE) \ $(TESTS) start: NODE_PATH=./app/controllers NODE_ENV=development nodemon server.js .PHONY: test 和test/test.js […]

正确的方式来testing快速应用程序API?

我已经find了一个办法,但我的直觉告诉我应该有一些更习惯性的做法。 基本上我不喜欢的是,我必须要求在testing套件中的快速应用程序,这让我想知道是否有一个种族条件正在进行。 另外,我想知道如果我在几个这样的文件中运行几个testing套件会发生什么。 任何人都知道更清洁的解决 我简化的应用程序如下所示: app.js app = module.exports = express() … http.createServer(app).listen(app.get('port'), function(){ console.log('app listening'); }); test.js var request = require('superagent'); var assert = require('assert'); var app = require('../app'); var port = app.get('port'); var rootUrl = 'localhost:'+port; describe('API tests', function(){ describe('/ (root url)', function(){ it('should return a 200 statuscode', function(done){ request.get(rootUrl).end(function(res){ assert.equal(200, res.status); done(); […]

用mochatesting节点tcp服务器

我有一个我想用摩卡testing的tcp服务器: // Start the server require('net').createServer(function (socket) { // Handle incoming data socket.on('data', function (data) { … some stuff socket.write("reply with some err message if any"); }); }); 我通常使用expressjs为HTTP Rest API开发节点应用程序,并使用grunt-express-server模块,例如: grunt.registerTask('validate', [ 'express:dev', 'mochaTest', 'express:dev:stop' ]); 这个运行快速服务器,运行testing并停止快速服务器。 有没有相同的东西来testingTCP服务器?

使用超级testing时,将节点应用程序重置为已知状态

我经常使用supertest对我的节点应用程序写黑盒testing。 该应用程序加载数据库设备和黑盒testing运行数据库的努力。 我想重置某些testing之间的应用程序状态(所以我可以运行不同的testing组合,而不必担心特定的数据库状态)。 理想的事情是能够用另一个重新加载应用程序: var app = require(../app.js).app; 但是这只发生一次,当我运行摩卡(因为它应该与require调用)。 我想我可以通过在一个batch file的多个mocha调用中包装我的testing,但是我的开发人员习惯于运行npm test ,我希望他们继续这样做。 我怎么能这样做?