nodejs / nodejs/node

--experimental-test-module-mocks is not working as expected

Abierto
#55,891 12 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

test_runner
Lenguaje dominante
JavaScript
Estrellas
122k
Forks
37.3k
Merge medio
4 d 2 h
PR fusionados (30 d)
283

Descripción

Version

v24.0.0-pre

Platform
Linux fedora 6.11.6-200.fc40.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov  1 16:09:34 UTC 2024 x86_64 GNU/Linux
Subsystem

No response

What steps will reproduce the bug?

This issue was observed inside the nodejs source code, when tying to create a benchmark
create a file benchmark/test_runner/mock-module.js

now copy this code

"use strict";

const { test } = require("node:test");

function main() {
  test(async (t) => {
    console.log("benchmark");

    try {
    // Create a mock module
    t.mock.module('axios', {
      namedExports: {
        get: (url) => url
      }
    });

    } catch (e) {
      console.error(e);
    }

    console.log("end");
  });
}

main()

now run this using ./node --experimental-test-module-mocks benchmark/test_runner/mock-module.js

You will get this output

benchmark
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'axios' imported from /home/ankan/Documents/git/me/node/benchmark/test_runner/mock-module.js
    at Object.getPackageJSONURL (node:internal/modules/package_json_reader:267:9)
    at packageResolve (node:internal/modules/esm/resolve:768:81)
    at moduleResolve (node:internal/modules/esm/resolve:854:18)
    at defaultResolve (node:internal/modules/esm/resolve:984:11)
    at nextResolve (node:internal/modules/esm/hooks:748:28)
    at resolve (node:internal/test_runner/mock/loader:78:35)
    at nextResolve (node:internal/modules/esm/hooks:748:28)
    at Hooks.resolve (node:internal/modules/esm/hooks:240:30)
    at handleMessage (node:internal/modules/esm/worker:199:24)
    at Immediate.checkForMessages (node:internal/modules/esm/worker:141:28) {
  code: 'ERR_MODULE_NOT_FOUND'
}
end
✔ <anonymous> (42.524333ms)
(node:91728) ExperimentalWarning: Module mocking is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 48.749785

As you can we we are trying to create a mock 'axios' module but we receive the error Cannot find package 'axios', which is unexpected as we are not even importing the module. The error is occurring because of the line t.mock.module

How often does it reproduce? Is there a required condition?

dose not need any special condition

What is the expected behavior? Why is that the expected behavior?

should create a mock module called axios

What do you see instead?

their is an error, saying package 'axios' not found, which is very unexpected

Additional information

No response

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con benchmark/test_runner/mock-module.js y la llamada t.mock.module; después, sigue el mock loader en internal/test_runner/mock/loader.js y su ruta de resolución de módulos. Reproduce el comportamiento con ./node --experimental-test-module-mocks benchmark/test_runner/mock-module.js; la tarea está terminada cuando el mock se puede crear sin el error inesperado de resolución de axios.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, node.js
Área
testing-qa
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
58/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.