Я сталкиваюсь с внутренней ошибкой сервера 500 при запуске теста Jest для моего приложения Express с помощью Supertest, но приложение работает нормально при обычном запуске (например, в браузере или Postman). Я подозреваю, что проблема связана с настройкой теста, но я не могу точно определить причину.
Это сообщение об ошибке при запуске теста npm
$ npm test
> kino-bio-projekt@0.0.0 test
> cross-env NODE_OPTIONS=--experimental-vm-modules jest
(node:16440) ExperimentalWarning: VM Modules is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
FAIL tests/movies.test.js
× Home page shows list of movies and navigation links (31 ms)
● Home page shows list of movies and navigation links
expected 200 "OK", got 500 "Internal Server Error"
33 | );
34 |
> 35 | const response = await request(app).get('/').expect('Content-Type', /html/).expect(200);
| ^
36 |
37 | expect(response.text).toMatch('Pulp Fiction');
38 | expect(response.text).toMatch('Fire Walk With Me');
at Object.expect (tests/movies.test.js:35:79)
----
at Test._assertStatus (node_modules/supertest/lib/test.js:252:14)
at node_modules/supertest/lib/test.js:308:13
at Test._assertFunction (node_modules/supertest/lib/test.js:285:13)
at Test.assert (node_modules/supertest/lib/test.js:164:23)
at Server.localAssert (node_modules/supertest/lib/test.js:120:14)
Наборы тестов: 1 неудачно, всего 1
Тесты: 1 неудачно, всего 1
Снимки: всего 0
Время: 0,617 с, расчетное 1 с
Выполнили все наборы тестов.
Я предоставлю часть своего кода movies.test.js
Запускайте приложение в обычном режиме: когда я запускаю приложение и захожу на http://localhost:5080 в браузере, оно работает нормально. Я вижу список фильмов, как и ожидалось.
Добавлено ведение журнала: я добавил глобальный обработчик ошибок и записал ошибку, но во время теста ошибка не записывается в консоль.
Имитация данных: я подтвердил, что имитируемая функция fetchAllMovies вызывается и возвращает правильные данные.
Упрощенный тест: я заменил тест базовым запросом к '/ 'без каких-либо ожиданий или утверждений, но Ошибка 500 сохраняется.
Я сталкиваюсь с внутренней ошибкой сервера 500 при запуске теста Jest для моего приложения Express с помощью Supertest, но приложение работает нормально при обычном запуске (например, в браузере или Postman). Я подозреваю, что проблема связана с настройкой теста, но я не могу точно определить причину. Это сообщение об ошибке при запуске теста npm [code]$ npm test
> kino-bio-projekt@0.0.0 test > cross-env NODE_OPTIONS=--experimental-vm-modules jest
(node:16440) ExperimentalWarning: VM Modules is an experimental feature and might change at any time (Use `node --trace-warnings ...` to show where the warning was created) FAIL tests/movies.test.js × Home page shows list of movies and navigation links (31 ms)
● Home page shows list of movies and navigation links
expected 200 "OK", got 500 "Internal Server Error"
at Object.expect (tests/movies.test.js:35:79) ---- at Test._assertStatus (node_modules/supertest/lib/test.js:252:14) at node_modules/supertest/lib/test.js:308:13 at Test._assertFunction (node_modules/supertest/lib/test.js:285:13) at Test.assert (node_modules/supertest/lib/test.js:164:23) at Server.localAssert (node_modules/supertest/lib/test.js:120:14) [/code] Наборы тестов: 1 неудачно, всего 1 Тесты: 1 неудачно, всего 1 Снимки: всего 0 Время: 0,617 с, расчетное 1 с Выполнили все наборы тестов. Я предоставлю часть своего кода [b]movies.test.js[/b] [code]import { expect, test } from '@jest/globals'; import request from 'supertest'; import { fetchAllMovies, fetchMovie } from '../src/js/server/fetchMovies.js'; import startApp from '../src/js/server/app.js';
export default function navLinks() { return { headerData, footerSection1, footerSection2, footerSection3, }; } [/code] [list] [*]Запускайте приложение в обычном режиме: когда я запускаю приложение и захожу на http://localhost:5080 в браузере, оно работает нормально. Я вижу список фильмов, как и ожидалось. [*]Добавлено ведение журнала: я добавил глобальный обработчик ошибок и записал ошибку, но во время теста ошибка не записывается в консоль. [*]Имитация данных: я подтвердил, что имитируемая функция fetchAllMovies вызывается и возвращает правильные данные. [*]Упрощенный тест: я заменил тест базовым запросом к '/ 'без каких-либо ожиданий или утверждений, но Ошибка 500 сохраняется. [/list]