我有一个特定的http请求调用,我正在尝试对其进行一些单元测试,但该测试失败了,因为似乎响应在返回实际的http响应对象之前就已经得到了评估。我尝试了许多图书馆,无论我能想到什么,但没有运气!这是针对学校项目的,因此这是一个非常简单的http请求,只需要完成一些单元测试即可。我最有可能自己进行单元测试,我只需要了解为什么响应总是一直“不确定”?
这是我的app.post()方法。
app.post("/getDates", (req,res,next)=>{
puzzleDates.puzzleRequest(req.body.puzzleDates)
.then((results)=>{
res.status(200).json(results);
})
.catch(err=>{
res.status(500).send({message: err});
})
})
它正在puzzleRequest文件中调用这些函数。
let puzzleRequest = async function(eventPuzzle) {
let PuzzleArr = []
let responseObj = new Object()
try {
eventPuzzle.sort((a,b)=>a.puzzleDate - b.puzzleDate);
for(let i=0; i < eventPuzzle.length; i++) {
let url = config.get('Url') + eventPuzzle[i].puzzleDate + '/puzzle.json';
let results = await fetchResults(url);
let puzzleObj = PuzzleModel.formatPuzzle(results);
PuzzleArr.push(puzzleObj);
}
responseObj.Puzzle = PuzzleArr;
return responseObj;
} catch (e) {
return e;
}
}
function fetchResults(url){
return new Promise((resolve,reject)=>{
request({
url: url,
method: 'GET'
}, (error,response,body)=>{
if(error) reject(error)
else{
let puzzle = JSON.parse(body);
resolve(puzzle);
}
})
})
}
module.exports.puzzleRequest = puzzleRequest;
由于响应似乎始终是不确定的,因此我无法对其进行任何单元测试。
对不起,我评论的东西,那只是我试图做的不同的事情。
const config = require('config');
const expect = require('chai').expect;
const request = require('supertest');
const requestGame = require('../request/requestGame')
describe('response template objects', ()=> {
it('should include properties from response template',async ()=>{
/*request(server)
.post('/getDates')
.expect(200)
.expect('Content-Type', /json/)*/
//var res = puzzleDates.puzzleRequest(puzzlesToGenerate)
//console.log(res);
//expect(res.games).to.be.an('array')
/*.end((err,res)=>{
if(err) return done(err)
res.body.should.have.property('games');
done()
})*/
const res = await puzzleDates.puzzleRequest(puzzlesToGenerate)
console.log(res);
expect(res).to.be.a('object');
})
})
作为学校的一项练习,您可以想象我在所有这些方面都是初学者,因此,如果您能帮助我理解这一点,将不胜感激。
再次感谢。