试图让Supertest发送一个正文到https帖子?

时间:2018-05-15 20:16:14

标签: node.js express https supertest

我是新人,没有为我做最好的工作。我在想:

  • 为什么身体未定义?
  • 命令行中是否有一个技巧来显示和检查控制台中的对象?
  • 为什么测试记录不是“你好”?

Block *block = new Block();

QRect rect = block->boundingRect().toRect();

QPixmap pixmapItem;
pixmapItem.copy(rect);

QListWidgetItem *item = new QListWidgetItem;
item->setIcon(QPixmap(pixmapItem));

....显示

$ mocha supertest.js

	"use strict";
	
	const request = require('supertest');
	const express = require('express');
	const https = require('https');
	const fs = require('fs');
	const path = require('path');
	const certPath = path.resolve(path.resolve(), './certs');
	
	const app = express();
	
	//This line is from the Node.js HTTPS documentation.
	const options = {
		key : fs.readFileSync(certPath+'/server-key.pem'),
		cert : fs.readFileSync(certPath+'/server-crt.pem'),
		ca : fs.readFileSync(certPath+'/ca-crt.pem')
	};
	
	// service
	app.post('/failService', function(req, res) {
		console.log('failService: '+req.body); // failService: undefined
		res.send('hello');
	});
	
	describe('trial not working', function() {
	  it('responds with json', function(done) {
		  request(app)
	      .post('/failService')
	      .send({name: 'john'})
	      .set('Accept', /json/)
	      .expect(200)
	      .end(function(err, res) {
	        if (err) return done(err);
	        console.log('response: '+res.body); // response: [object Object]
	        done();
	      });
	  });
	});

请注意,证书(不包括在内)是自签名的。

2 个答案:

答案 0 :(得分:0)

当我将代码隔离开来时,我错过了选项。因此,它不使用SSL。对不起。

我回到了启动服务器并在我的测试用例中使用客户端。为此我必须解决:

  1. CORS
  2. The actual problem of this post by using a body parser

答案 1 :(得分:0)

这是由于自签名证书所致。

我也面临类似的问题,有两种可能的解决方案

  1. 在测试环境中创建http服务器而不是https服务器
  2. supertest npm软件包替换superrequest,并将strictSsl设置为false。