Использование js-узла перед описанием за пределами описания

как видно из предыдущего изображения, из описания он не называется, а все остальные есть.

Есть причина или не работает, вот и все.

Если я вставлю это в описание, оно работает.

import {
  before,
  beforeEach,
  after,
  afterEach,
  describe,
  it,
  test,
} from "node:test";
import assert from "node:assert";

import { add, subtract } from "../index.js";

before(function () {
  console.info("before");
});
beforeEach(function () {
  console.info("beforeEach");
});
afterEach(function () {
  console.info("afterEach");
});
after(function () {
  console.info("after");
});

describe("Arithmetic Operations", () => {
  it("should correctly add two numbers", () => {
    const result = add(2, 3);
    assert.strictEqual(result, 5);
  });

  it("should correctly subtract two numbers", () => {
    const result = subtract(5, 3);
    assert.strictEqual(result, 2);
  });
});

Какую версию узла вы используете?

TBA 17.06.2024 15:22

Так в чем именно вопрос?

Mureinik 17.06.2024 15:41

@TBA: узел v18.17.1

Paul 18.06.2024 17:37

@Mureinik: Тот, который описан, почему не напечатано слово «до».

Paul 18.06.2024 17:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это похоже на ошибку в средстве запуска тестов Node.js, что неудивительно, учитывая, что вы используете Node.js 18.17.1, а средство запуска тестов было объявлено стабильным только в Node.js 20.0.0.

С Node.js 18.17.1 мне удалось последовательно воспроизвести такое поведение:

➜  nvm use 18.17.1
Now using node v18.17.1 (npm v9.6.7)
➜  node node.test.js 
beforeEach
afterEach
beforeEach
afterEach
▶ Arithmetic Operations
  ✔ should correctly add two numbers (0.834959ms)
  ✔ should correctly subtract two numbers (0.168333ms)
▶ Arithmetic Operations (1.795125ms)

after
ℹ tests 2
ℹ suites 1
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 0.213542

Однако, как только я перешел на последнюю версию Node.js (22.3.0 на момент написания), этот код действительно работает так, как ожидалось:

➜  nvm use 22.3.0
Now using node v22.3.0 (npm v10.8.1)
➜  node node.test.js
before
beforeEach
afterEach
beforeEach
afterEach
after
▶ Arithmetic Operations
  ✔ should correctly add two numbers (0.517375ms)
  ✔ should correctly subtract two numbers (0.674292ms)
▶ Arithmetic Operations (1.538292ms)
ℹ tests 2
ℹ suites 1
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6.906708

Идеально отлично, спасибо. У меня возникает сомнение, а не имело ли after больше смысла печатать после всего describe, чего не происходит с версией v22.3.0. Можете ли вы мне сказать: почему duration_ms так высоко в v22.3.0 по сравнению с v18.17.1, даже если мы говорим о мс?

Paul 21.06.2024 21:38

@Paul Я предполагаю, что старая версия не учитывает обратные вызовы before[Each]/after[Each], а более новая — учитывает. Обратите внимание, что сами тесты просто выполняют некоторые базовые математические операции, в то время как обратные вызовы выполняют ввод-вывод в стандартный вывод, что должно быть на порядок медленнее.

Mureinik 22.06.2024 16:38

Но когда он говорит, что: Arithmetic Operations (1.538292ms) будет общее время, чтобы выполнить все, но почему, как вы думаете, если я это сделаю: should correctly add two numbers (0.517375ms)+should correctly subtract two numbers (0.674292ms) разве это не всегда даст мне один и тот же результат для базовых операций, которые мы не знаем?

Paul 25.06.2024 14:42

Другие вопросы по теме