Модульный тест NodeJs асинхронный HTTP-запрос не работает ответ ноль - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть определенный вызов 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');
})

})

Будучи школьным упражнением, вы можете себе представить, что я новичок во всем этом, так что, если вы поможете мне понять это, я буду очень признателен.

Еще раз спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...