У меня есть определенный вызов 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');
})
})
Будучи школьным упражнением, вы можете себе представить, что я новичок во всем этом, так что, если вы поможете мне понять это, я буду очень признателен.
Еще раз спасибо.