Использование ключевого слова «export» исключительно для импорта в модульные тесты - PullRequest
0 голосов
/ 20 января 2020

Я использую Метеор и пишу юнит-тесты для Коллекции. У меня есть методы Helper для коллекции в дополнение к обычным JS функциям.

Т.е.

Collection.helpers({
    helperFn: function () {
        return 'foo';
    }
});

//And in the same file
function bar() {
    return "bar";
}

Тогда в моем тестовом файле у меня есть что-то вроде

import { Collection } from '../collections'
//Use Factory or Stub to create test Document

//This then works just fine and I can assert, etc..
testDoc.helperFn

Мой вопрос связан с желанием протестировать только обычную функцию 'bar' JS. Использование классов ES6 не представляет особой проблемы, потому что тогда я могу просто экспортировать весь класс и вызвать любую функцию с его экземпляром. Но с помощью Meteor я нахожу единственный способ получить доступ к этой функции - использовать ключевое слово «export».

Итак, в моем файле Collection

export function bar ({ return bar; });

А теперь в моем тестовом файле Я бы сделал что-то вроде

import { bar } from '../collection'

Я бы не стал добавлять оператор экспорта при каждом тестировании новой функции. Есть ли способ обойти это или это не имеет большого значения?

1 Ответ

1 голос
/ 20 января 2020

Я думаю, что экспорт / импорт - это путь к go, но, чтобы ответить на первую часть вашего вопроса: да, вы можете вернуться к первоначальной области видимости метеора и поместить эти функции в глобальную область видимости. метеор следующим образом:

  • делайте не поместите ваши файлы в папку imports/, но в другую папку в вашем проекте, например, server/.
  • определили функции как:
    bar = function() { /* function body */ }
    
    Эти переменные интерпретируются метеором как глобальные для проекта, и, следовательно, их не нужно импортировать перед использованием.

При этом существует причина, по которой метеор представила папку imports/ и соответствующую парадигму экспорта / импорта в версии 1.3. Это позволяет избежать загрязнения глобальной области видимости и значительно упрощает определение места вещей.

...