Jest & Supertest - Ответ не заполнен - PullRequest
1 голос
/ 28 мая 2020

Я написал следующий тестовый пример, используя шутку для тестирования REST API:

test('Should return module for given module name' , async () =>{
const response = await request(app)
.get('/modules')
.set('Authorization', 'Bearer ' +User1.tokens[0].token)
.send('modulename','Shark')
.expect(200)
expect(response.body.name[0]).toBe('Shark')

Соответствующий node js маршрут

   var modulename = req.query.modulename;
   console.log(modulename)
   const modules = await LuaModule.findByName(modulename)
   res.send(modules)
}

.expect (200) завершится успешно, однако ожидайте ( response.body.name) .toBe ('Shark') завершается ошибкой, хотя API возвращает JSON ответ с полем 'name' со значением 'Shark'. Jest выдает следующую ошибку:

Ожидается: Shark Получено: undefined

Обработчик маршрута на стороне сервера:

router.get('/modules', auth, async(req, res) => {
    var modulename = req.query.modulename;
    console.log(modulename);
    const modules = await LuaModule.findByName(modulename);
    res.send(modules);
}

Любые предложения по этому поводу будут полезны.

1 Ответ

0 голосов
/ 28 мая 2020

Поскольку вы ожидаете, что параметр запроса будет установлен в запросе на стороне сервера, вам необходимо убедиться, что он установлен правильно: supertest:

const response = await request(app)
.get('/modules')
.set('Authorization', 'Bearer ' +User1.tokens[0].token)
.query({modulename: 'Shark'}); // instead of .send(...)
...

Кроме того, поскольку вы возвращаете массив не объект) вам необходимо получить доступ к свойству name объекта по первому индексу как:

expect(response.body[0].name).toBe('Shark')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...