Articles of supertest

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

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

testingexpress API需要本地服务器

我读过我可以在一个快速应用程序(nodeJS)与超级testing运行摩卡testing,因此它不需要在不同的terminal会话中运行应用程序。 无论我尝试它总是以连接错误结束。 为了configuration我们的持续集成,显然集成和unit testing(mocha,supertest,should)应该能够运行,而节点服务器也不运行 书面testing是validation我们的应用程序的内部API端点谁可以解释如何运行testing,而无需运行应用程序的快递服务器,以便他们可以与例如strider

如何用passport.jslogin用户testingsail.js控制器

我尝试unit testing我的sail.js控制器,要求用户login。我目前的testing是: var request = require('supertest'), // I try to use 'superagent', this changes nothing user = request.agent; describe('SomeController', function() { // login user first of all before(function(done) { user(sails.hooks.http.app) .post('/user/login') .send({username: 'hellocat', password: '123456789'}) // request works well by itself, // it does not return error and return normal response. .end(function (err, res) { […]

两个文件使用超级摩擦引起EADDRINUSE摩卡

我使用supertest来unit testing我的服务器configuration和路由处理程序。 服务器configurationtesting在test.server.js ,路由处理testing在test.routes.handlers.js 。 当我使用mocha .运行所有的testing文件mocha . ,我得到EADDRINUSE 。 当我单独运行每个文件时,一切都按预期工作。 这两个文件定义并要求supertest, request = require('supertest')和express服务器文件app = require('../server.js') 。 在server.js ,服务器是这样启动的: http.createServer(app).listen(app.get('port'), config.hostName, function () { console.log('Express server listening on port ' + app.get('port')); }); 我的实现有什么问题吗? 运行testing时如何避免EADDRINUSE错误?

数组无意中被转换为超级对象

数组波纹pipe(query.conditions)以某种方式转换为对象,任何想法为什么以及如何防止它? 请求: supertest(options.url) .get('/api/action') .expect(200) .query({ conditions: [ { 'user' : user._id }, { 'type' : 14 }, { 'what' : 4 }, ] }) 服务器得到什么: { "conditions": { "user": "5592cc851f3febd016dae920", "type": "14", "what": "4" } }

如何使用mocha和supertesttesting头部参数的快速restapi?

我必须testing我的restapi。 某些路由在用户身份validation令牌的http请求标头中需要一个值。 我已经在纯JavaScript代码中分离了我的有趣业务逻辑,但是我找不到在http请求头中testing需要令牌的路由的方法。 欢迎任何其他摩卡和/或超级食品的替代品。

testing风帆控制器

我试图testing我的帆控制器。 但是当我在我的UserController.test.js中使用这一行代码,它抛出一个错误不能调用undefined var app = sails.hooks.http.app 在bootstrap.test.js中,我已经声明了这样的风帆 var sails = require('sails') before(function(done){ Sails.lift({},function(err,sails){ done(err, sails); }) }) PS:我已经检查,sails.hooks工作正常,只有在调用http方法它给我这个错误。 我正在关注这个链接进行testing。 帆testing

passportjs,摩卡,超级ECONNREFUSED

我正在尝试使用摩卡,超级terminal和护照进行身份validation,但是我收到拒绝连接的错误消息。 我认为这与我开始我的应用程序的方式… var testUser = { "email": "test@test.com", "password": "test" }; var app = require('../../server'); var request = require('superagent'); var user = request.agent(app); describe('authentication api ', function() { it('should login a user', function(done) { user.post('/login') .send(testUser) .end(function(err, res) { if(err) throw err; done(); }); }); }); 这个用户确实存在于我的mongo数据库中。 在我的服务器文件,这是更高的两个层次: module.exports = app.listen(port, function() { console.log('app listening […]

在超级请求中设置ip

超supertest,我可以做一个resquest来testing我的node.js应用程序 var request = require('supertest'); var api = require('../server').app; … it('json response', function(done){ request(api) .get('/api') .set('Accept', 'application/json') .expect('Content-Type', /json/) .end(function(err, res){ done(); }); }); 我如何设置特定的IP来做testing请求? it('ip access denied', function(done){ request(api) .get('/api') .set('Accept', 'application/json') .expect('Content-Type', /json/) // set specific ip .end(function(err, res){ res.body.message.should.eql('Access denied'); done(); }); });

如何嘲笑后端的第三方API调用

我正在用摩卡和超级testing我的应用程序,所以我的testing总是像 var request = require('supertest'), app = require('./bootstrap.js'); describe('…', function() { it('…', function() { request(app) .get('/some/url') // … }); }); 在监听端口之前,bootstrap.js是我真正的应用程序 所有的作品都很完美,但是最近我不得不添加对第三方API的调用,而且testing速度很慢 所以当我这样做,例如testing需要5秒钟 request(app) .get('/my/endpoint/that/makes/call/others') // … 如何在testing过程中做出虚假的电话,但在运行我的应用程序时是否真实?