Где должны проводиться единичные тесты в Метеор?

Есть ли место, где мои тесты могут жить без участия 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

И Виола, начните писать свои тесты на жасмин. Эти должности могут помочь вам.