Тест с помощью jest / supertest для просмотра переменных тела res.render (handlebars. js)
Я пытаюсь запустить тест сайта, просматривая массив URL-адресов и выполните простой тест, чтобы проверить наличие «заголовка страницы», я использую: Express. js: Jest: Supertest и Handlebars. js,
У меня есть тест, который зацикливается массив URL-адресов, и я хотел бы сделать тест "URL-адресов" для определенного допустимого "заголовка страницы".
Проблема Я не могу получить доступ к переменной pagetitle / любой другой переменные. Тест работает и регистрирует маршрутизацию express как код 200. Я протестировал с помощью res.send на примере JSON
{name :"john"}
Это работает и возвращает res.body json объект. При вызове переменных через браузер localhost переменная успешно возвращается.
Я проверил это различными способами и подозреваю, что это как-то связано с res.render, удаляющим res.body / res.locals из маршрутизация. Либо res.render, либо, возможно, тесты не ожидают успешного возврата с помощью функции asyn c, но я не знаю, как объединить это, если это проблема. Маршрут res.render, возвращаемый через тест, также связывает тестовый res.text с возвращенным шаблоном, что, как мне кажется, исключает проблему c.
Это может быть связано с bodyparser, Настройка порта или сервера, однако это было исследовано, исключая фундаментальное недопонимание функциональности супер-теста.
В принципе, супер-тест запускает сервер, тест инициируется и проходит, повторяя код 200, однако переменные в возвращаемой маршрутизации отсутствуют.
Большое количество консольных журналов должно отображать различные элементы, с которыми встречаются.
Пакет. json
"scripts": {
"test:watch": "jest --detectOpenHandles --watchAll --maxWorkers=1"
},
Express Маршрутизация
exports.introduction = function(req, res) {
console.log(res.locals.mybody)
res.render(directory+'introduction',{
pagetitle: 'Introduction | '+sitename+'',
siteName : sitename,
})
};
Тестовый файл
const request = require('supertest');
const express = require('express');
const app = require('../index.js')
app.set('port', process.env.PORT || 3001);
var siteIndex = [{
url: '/introduction',
lastMod: new Date('2000-02-02'),
changeFreq: 'weekly',
requireslogin : false
}]
Ошибка на консоли
FAIL tests/fraternateendpoint.test.js
console.log index.js:119
[Object: null prototype] { mybody: 'pass a variable' }
console.log node_modules/fraternate/controllers/fraternatepages.js:53
pass a variable
console.log tests/fraternateendpoint.test.js:115
This is empty {}
console.log tests/fraternateendpoint.test.js:116
This is undefined undefined
console.log tests/fraternateendpoint.test.js:117
This is undefined undefined
console.log tests/fraternateendpoint.test.js:118
This is undefined undefined
console.log tests/fraternateendpoint.test.js:119
This is undefined undefined
console.log tests/fraternateendpoint.test.js:120
This is empty undefined
console.log tests/fraternateendpoint.test.js:121
This is empty undefined end point testing of sitemap › given "/introduction" endpoint should return a 200, and a pagetitle should exist.
TypeError: Cannot read property 'mybody' of undefined
120 | console.log('This is empty',res.body.mybody)
121 | console.log('This is empty',res.mybody)
> 122 | console.log('This is undefined',res.locals.mybody)
| ^
123 | console.log('This is undefined',res.req.locals.mybody)
124 | console.log('This is undefined',res.res.locals.mybody)
125 | console.log('This is undefined',res.exphbs.mybody)
at Test.<anonymous> (tests/fraternateendpoint.test.js:122:58)
at Test.assert (node_modules/supertest/lib/test.js:181:6)
at Server.localAssert (node_modules/supertest/lib/test.js:131:12)