Как я могу использовать функции и объекты, не требуя их в NodeJS - PullRequest
0 голосов
/ 12 июня 2018

Я изучаю NodeJS около года, и сегодня нашел что-то странное для меня.Мы все знаем, что для использования модуля (функции, объекта или переменной) в другом модуле мы должны экспортировать и импортировать его, за исключением встроенных модулей, таких как String, Number, Promise и т. Д. Я установил внешний пакет для модульного тестирования, который называется Jest .

Странно то, что я создал два тестовых модуля с именами: logic.js и logic.test.js, но ни в одном из них я не импортировал модуль Jest, однако я могу получить доступ ко всем его модулям.методы.Покажем некоторый код:

logic.js

module.exports.add = function(a, b){
    return a + b;
}

logic.test.js

const lib = require('../logic')

test('Add - Should return the sum of two numbers', () => {
    const result = lib.add(1,3);
    expect(result).toBe(4);
});

AsВы можете видеть в logic.test.js У меня есть доступ к expect и test методам, и я ничего не навязывал о Jest.

Вопросы здесь:

  • Как это возможно?
  • Полезно делать это с моими модулями

1 Ответ

0 голосов
/ 12 июня 2018

Как указано в комментариях Jonas W , они используют переменную global, которая является общей для всего вашего приложения.

Использование глобальной переменной очень просто

test.js

global.myObject = 'MyMan'

app.js

require('./test')

console.log(myObject)

Загрузка app.js отобразит MyMan

Вы можете сказать, что я на самом деле импортирую тестовый модуль, а Jest - нет.

Дело в том, что вы запускаете приложение узла, используя node yourFile.js, но вы запускаете свои тесты шутов с помощью командной строки jest.

Это командная строка jest, которая обрабатывает привязку между своей структурой (методы expect и test.) И вашим сценарием.

Это хорошая практика?

Я бы сказал, нет.За исключением случаев, когда вы планируете создать такую ​​библиотеку, как Jest, которая будет иметь собственную программу запуска командной строки и вы хотите предоставлять такие инструменты пользователям вашей библиотеки.

Сила Node живет в модульной организации, не бойтесь их использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...