Где должны проводиться единичные тесты в Метеор?
Есть ли место, где мои тесты могут жить без участия Meteor?
Я только что начал свой первый проект Meteor и начал с написания модульных тестов Mocha и should.js. Несмотря на то, что mocha работает без проблем, тесты не позволяют запустить Meteor, поскольку у него есть проблемы с использованием node require
вместо __meteor_bootstrap__.require
(полное сообщение об ошибке).
Сказав это, Метеор не должен запускать мои тесты! Согласно Meteor documentation, код можно разместить только на клиенте, сервере или и то, и другое. Unit test апартаменты не принадлежат к этим категориям, и я не единственный человек, смущенный Метеором, не имеющий четко определенного места для размещения автоматических тестов.
В настоящее время мои тесты хранятся в server/test/
, с содержимым каждого файла, заключенного в блок:
if (typeof(Meteor) === 'undefined') { ... }
Пока это работает, он не чувствует себя элегантно. Есть ли у вас какие-либо другие предложения по структурированию ваших тестов с помощью вашего приложения Meteor?
Обновление: вместо явных инструкций в документах Meteor, я следил за соглашениями с папками Rails (4-й пункт), используя папку под названием test
для хранения моих тестовых активов. Позже я перевел это на server/test
, так как я не хотел, чтобы он был загружен на клиенте.
Ответы
Ответ 1
Поместите свои тесты в папку tests/
. В отличие от Rails, для которой для этой цели используется папка с именем test
, Meteor использует множественное число tests
для этого имени папки.
Активы, хранящиеся в папке с именем "тесты", полностью игнорируются Meteor; эти активы не будут загружены на клиент или сервер.
По иронии судьбы, меня опрокинул кто-то, имеющий противоположный вопрос, который хочет, чтобы их тесты загружались клиентом Meteor.
Ответ 2
По состоянию на 0,6,0 интересный подход заключается в том, чтобы использовать только локальные интеллектуальные пакеты для вашего приложения, которые можно легко протестировать с использованием Meteor tinytest. У вас будет минимальный код, находящийся вне смарт-пакетов, чтобы загружать ваше приложение.
EDIT: Я сделал этот подход, и мне даже не нужен минимальный код, который находится вне смарт-пакетов. Все приложение - это пакеты.
Ответ 3
Поместите тестовые файлы в папку tests
, и все будет в порядке. Если ваше приложение таково, что у вас несколько файлов, вложенных в папку server
или client
, вы можете реплицировать аналогичную структуру папок в каталоге tests/client
или tests/server
. Не правило, но я думаю, что это помогает в обслуживании, и у меня был опыт тратить часы на отладку отсутствующей ошибки класса, которая была просто решена путем организации структуры файла в тестовой папке.
Ответ 4
Так как это вопрос с 2012 года, и здесь нет единого исчерпывающего ответа, я хотел бы попробовать его здесь.
Это хорошая отправная точка, чтобы начать думать о тестировании вашего проекта метеор.
В двух словах Шаг 1: метеор добавить санджо: жасмин Шаг 2: скорость добавления метеорита: html-репортер
В тот момент, когда вы это делаете, и если ваше приложение работает (или когда вы запускаете приложение), в правом верхнем углу браузера, где вы открываете приложение, открывается - вы должны увидеть мигающую точку. Это. Теперь у вас есть свои тестовые рамки.
Теперь вы также можете создать структуру каталогов с помощью этой структуры. Когда вы нажмете на эту мигающую точку, вы увидите всплывающее окно, как показано ниже.
![Статус теста скорости]()
У этого есть удобные ссылки для генерации вашей тестовой структуры каталогов.
В качестве альтернативы вы можете сделать это вручную, как показано ниже.
Следующим шагом будет выбор структуры каталогов. Метеоритная документация говорит об этом достаточно. Вам нужно иметь папку с тегами в корневом каталоге проекта.
Взяв cue из здесь, вы можете пойти так.
<projectRoot>
|---jasmine
|---client
|--- integration
|---- my.first.integration.spec.js
|---client
|--- unit
|---- my.first.unit.spec.js
|---jasmine
|---server
|--- integration
|---- my.first.integration.spec.js
|---server
|--- unit
|---- my.first.unit.spec.js
И Виола, начните писать свои тесты на жасмин. Эти должности могут помочь вам.