совместно используемое тестовое приспособление для измерения скорости метеора огурца и жасмина

Как разделить приспособление между тестом на огурец и жасмин?

Я могу создать прибор с одним интеграционным тестом jasmine server, который можно использовать с другими интеграционными тестами jasmine server. Но (думаю, из-за разных «зеркал»?) Я не могу использовать одно и то же приспособление в тесте на огурец. В коллекции Mongo нет данных, созданных тестами интеграции сервера jasmine.

Одним из вариантов является сохранение состояния в плоском файле или в виде nock, что-то подобное вне метеора. Но было бы намного проще ссылаться на общую коллекцию (на том же зеркале?) для тестовых приборов. Это возможно?


person Nathan Buesgens    schedule 04.05.2015    source источник


Ответы (3)


Вы можете использовать шаблон package-fixture для фикстур, чтобы достичь того, о чем вы просите. См. здесь: https://github.com/meteor-velocity/velocity#fixtures--test-data

Любые пакеты, которые вы создаете с флагом debugOnly в дескрипторе пакета, не будут объединены в рабочую среду.

person Xolv.io    schedule 04.05.2015
comment
Спасибо за ответ. Мне нравится книга. На самом деле я использую пакет для своего тестового приспособления, но данные коллекции, которые находятся в моем приспособлении в jasmine, отличаются от данных коллекции, которые находятся в моем приспособлении в огурце. Я могу попытаться привести пример, если это не ожидаемое поведение. В качестве побочного эффекта мои интеграционные тесты производят данные фикстуры, и я хочу использовать эти данные в огурце. - person Nathan Buesgens; 04.05.2015
comment
Я бы порекомендовал вам извлечь логику, производящую данные, из побочного эффекта в пакет, чтобы вы могли ею управлять. Еще одно соображение заключается в том, что фреймворки работают параллельно. Таким образом, данные, полученные в ходе тестового прогона jamine, нельзя передать по конвейеру для использования в огурце. Вы можете создать базовый уровень данных после запуска интеграционных тестов (возможно, выгрузить в файл), но, честно говоря, я бы посмотрел на извлечение создания данных в изолированный фрагмент кода, чтобы вы могли разделить проблемы и, следовательно, удобство сопровождения. - person Xolv.io; 04.05.2015

Все возможно. Однако я не рекомендую делать тесты зависимыми друг от друга. Как сообщает Википедия:

В идеале каждый тестовый пример независим от других.

Несколько причин, по которым ваши тесты должны быть независимыми:

  • Легче сузить проблему, если тесты не пройдены (если тесты зависят друг от друга, у вас будут некоторые сбои тестов, когда просто предшественник не прошел)
  • Обеспечивает распараллеливание для сокращения общего времени выполнения теста (по мере роста вашего набора тестов).

В настоящее время Velocity жестко кодирует порт 5000 для тестового зеркального экземпляра вашего приложения, но я знаю, что предпринимаются попытки сделать этот порт настраиваемым (что должно поддерживаться самими тестовыми фреймворками).

person Peter Ilfrich    schedule 04.05.2015
comment
Мне не нужны тесты, зависящие друг от друга, и я не пишу модульные тесты. Мне нужен интеграционный тест и сквозной/приемочный тест, которые зависят от одного и того же тестового приспособления. - person Nathan Buesgens; 04.05.2015
comment
Velocity больше не жестко кодирует порты на 5000 для зеркал, теперь он использует свободный порт, и все фреймворки были обновлены. Вы должны обновить до последней :) - person Xolv.io; 04.05.2015

Краткий ответ на это таков: общее состояние выполнения между инструментами тестирования не поддерживается (хотя оба могут выполнять код из одного и того же пакета фикстур). Использование, которое я собираюсь использовать, не является обычным шаблоном и включает некоторую зависимость между тестами.

Чтобы получить то, к чему я стремился, мне пришлось написать собственный инструмент. То, что я хотел, было в основном оберткой вокруг nock, чтобы помочь мне создавать тестовые приборы, записывая результаты моих тестов e2e с включенными интеграциями.

person Nathan Buesgens    schedule 06.05.2015
comment
Я создал пакет, который может это сделать. Он называется http-interceptor, но пока полностью документирован. github.com/xolvio/http-перехватчик - person Xolv.io; 06.05.2015