Разработка с использованием Meteor
Я не вижу, как сделать тестовое развитие в метеоре.
Я не вижу упоминания нигде в документации или FAQ. Я не вижу никаких примеров или что-то в этом роде.
Я вижу, что некоторые пакеты используют Tinytest.
Мне нужен ответ от разработчиков, что такое дорожная карта по этому поводу. Что-то вроде:
- возможно, нет документации, сами убедитесь.
- Метеор не построен таким образом, что вы можете сделать тестируемые приложения
- Это запланированная функция
- и т.д.
Ответы
Ответ 1
Обновление 3. В Meteor 1.3 метеор включает в себя руководство по тестированию с пошаговыми инструкциями для тестирования модулей, интеграции, принятия и нагрузки.
Обновление 2: по состоянию на 9 ноября 2015 года Velocity больше не поддерживается. Xolv.io фокусирует свои усилия на Chimp, а Meteor Development Group должна выбрать официальную структуру тестирования.
Обновление: Velocity Официальное тестовое решение Meteor с 0.8.1.
В это время не было написано о автоматическом тестировании с помощью Meteor. Я ожидаю, что сообщество Meteor разработает лучшие практики, прежде чем устанавливать что-либо в официальной документации. В конце концов, Метеор достигла 0,5 на этой неделе, и ситуация все еще быстро меняется.
Хорошие новости: вы можете использовать Node.js инструменты для тестирования с помощью Meteor.
Для моего проекта Meteor я запускаю свои модульные тесты с помощью Mocha, используя Chai для утверждений. Если вам не нужен полный набор функций Chai, я рекомендую вместо этого использовать should.js. На данный момент у меня только модульные тесты, хотя вы также можете написать интеграционные тесты с Mocha.
Обязательно поместите свои тесты в папку "тесты" , чтобы Meteor не пыталась выполнить ваши тесты.
Mocha поддерживает CoffeeScript, мой выбор языка сценариев для проектов Meteor. Здесь образец Cakefile с задачами для запуска тестов Mocha. Если вы используете JS с Meteor, не стесняйтесь адаптировать команды для Makefile.
Ваши модели Meteor нуждаются в небольшой модификации, чтобы разоблачить Mocha, и для этого требуется некоторое знание того, как работает Node.js. Подумайте о каждом файле Node.js как выполненном в пределах его собственной области. Meteor автоматически предоставляет объекты в разных файлах друг другу, но обычные Node приложения, такие как Mocha, не делают этого. Чтобы наши модели были проверены Mocha, export, каждая модель Meteor со следующим шаблоном CoffeeScript:
# Export our class to Node.js when running
# other modules, e.g. our Mocha tests
#
# Place this at the bottom of our Model.coffee
# file after our Model class has been defined.
exports.Model = Model unless Meteor?
... и в верхней части теста Mocha импортируйте модель, которую вы хотите протестировать:
# Need to use Coffeescript destructuring to reference
# the object bound in the returned scope
# http://coffeescript.org/#destructuring
{Model} = require '../path/to/model'
С этим вы можете начать писать и выполнять модульные тесты с помощью своего проекта Meteor!
Ответ 2
Привет всем checkout laika - вся новая платформа тестирования для метеора
http://arunoda.github.io/laika/
Вы можете одновременно проверить сервер и клиент.
Отказ от ответственности: я автор Laika.
Ответ 3
Я понимаю, что на этот вопрос уже дан ответ, но я думаю, что это может использовать еще какой-то контекст в виде дополнительного ответа, предоставляющего упомянутый контекст.
Я занимался разработкой приложений с метеор, а также разработкой пакетов, как путем реализации пакета для метеорного ядра, так и для atmosphere.
Похоже, что ваш вопрос может быть на самом деле вопросом в трех частях:
- Как запустить весь набор тестов метеоров?
- Как написать и запустить тесты для отдельных интеллектуальных пакетов?
- Как писать и запускать тесты для собственного приложения?
А также звучит так, что там где-то может быть бонусный вопрос:
4. Как реализовать непрерывное интегрирование для 1, 2 и 3?
Я разговаривал и начал сотрудничать с Наоми Сейфер (@sixolet) на метеоре основная команда, чтобы помочь получить окончательные ответы на все эти вопросы в документации.
Я отправил начальный запрос на выгрузку адресации 1 и 2 в ядро метеор: https://github.com/meteor/meteor/pull/573.
Недавно я также ответил на этот вопрос:
Как вы проводите тесты метеоров?
Я думаю, что @Blackcoat окончательно ответил 3, выше.
Что касается бонуса, я бы предложил использовать circleci.com хотя бы для непрерывной интеграции ваших собственных приложений. В настоящее время они поддерживают вариант использования, описанный @Blackcoat. У меня есть проект, в котором я успешно получил тесты, написанные в coffeescript для запуска модульных тестов с моккой, в значительной степени, как описал @Blackcoat.
Для непрерывного интегрирования на ядре метеор и интеллектуальных пакетов мы с Наоми Сейфер беседуем с основателем кругового движения, чтобы узнать, можем ли мы в какой-то момент добиться чего-то удивительного.
Ответ 4
RTD теперь устарела и заменена Velocity, которая является официальной платформой тестирования для Meteor 1.0. Документация по-прежнему относительно новая, поскольку Velocity находится в тяжелом развитии. Вы можете найти дополнительную информацию о Velocity Github repo, Velocity Домашняя страница и Руководство по тестированию Meteor (платный контент)
Отказ от ответственности: я являюсь одним из основных членов группы Velocity и автора книги.
Ознакомьтесь с RTD, полной схемой тестирования для Meteor здесь rtd.xolv.io.
Он поддерживает Jasmine/Mocha/custom и работает как с обычным JS, так и с кофе. Он также включает в себя тестовое покрытие, которое объединяет охват устройства/сервера/клиента.
И пример проекта здесь
Блог для объяснения модульного тестирования с помощью Meteor здесь
Подход к тестированию e2e с использованием Selenium WebdriverJS и Meteor здесь
Надеюсь, что это поможет. Отказ от ответственности: я являюсь автором RTD.
Ответ 5
Я много использовал эту страницу и пробовал все ответы, но с начальной точки начала я нашел их довольно запутанными. Как только у меня возникли проблемы, я смутился о том, как их исправить.
Это решение очень просто начать, если не полностью задокументировано, поэтому я рекомендую его для таких людей, как я, которые хотят делать TDD, но не уверены, как работает тестирование в JavaScript и какие библиотеки подключаются к тому, что:
https://github.com/mad-eye/meteor-mocha-web
FYI, я обнаружил, что мне также нужно использовать маршрутизатор Atmosphere package, чтобы запустить маршрут "/tests" и отобразить результаты из тестов, так как я не хотел, чтобы он загромождал мое приложение каждый раз, когда он загружается.
Ответ 6
Об использовании tinytest, вы можете взглянуть на эти полезные ресурсы:
Ответ 7
Я делаю функциональные/интеграционные тесты с помощью Meteor + Mocha в браузере. У меня есть что-то вроде следующих (в coffeescript для лучшей читаемости):
На клиенте...
Meteor.startup ->
Meteor.call 'shouldTest', (err, shouldTest) ->
if err? then throw err
if shouldTest then runTests()
# Dynamically load and run mocha. I factored this out in a separate method so
# that I can (re-)run the tests from the console whenever I like.
# NB: This assumes that you have your mocha/chai scripts in .../public/mocha.
# You can point to a CDN, too.
runTests = ->
$('head').append('<link href="/mocha/mocha.css" rel="stylesheet" />')
$.getScript '/mocha/mocha.js', ->
$.getScript '/mocha/chai.js', ->
$('body').append('<div id="mocha"> </div>')
chai.should() # ... or assert or explain ...
mocha.setup 'bdd'
loadSpecs() # This function contains your actual describe(), etc. calls.
mocha.run()
... и на сервере:
Meteor.methods 'shouldTest': -> true unless Meteor.settings.noTests # ... or whatever.
Конечно, вы можете выполнять тестирование на стороне клиента таким же образом. Тем не менее, для тестирования интеграции приятно иметь всю инфраструктуру Meteor.
Ответ 8
Тестирование становится основной частью Meteor в предстоящем выпуске 1.3. Исходное решение основано на Mocha и Chai.
Оригинальные обсуждения минимального жизнеспособного дизайна можно найти здесь и подробности первая реализация может быть найдена здесь.
ЦРТ подготовили исходные кости справочной документации для тестирования который можно найти здесь, и есть некоторые примеры тестов здесь.
Это пример теста публикации по ссылке выше:
it('sends all todos for a public list when logged in', (done) => {
const collector = new PublicationCollector({userId});
collector.collect('Todos.inList', publicList._id, (collections) => {
chai.assert.equal(collections.Todos.length, 3);
done();
});
});
Ответ 9
Как сказал Blackcout, Velocity является официальной инфраструктурой TDD для Meteor. Но в этот момент скорость веб-страницы не обеспечивает хорошую документацию. Поэтому я рекомендую вам посмотреть:
Ответ 10
Другим вариантом, который легко доступен с 0.6.0, является запуск всего приложения из локальных интеллектуальных пакетов с минимальным количеством кода за пределами пакетов для загрузки вашего приложения (возможно, с помощью специального смарт-пакета, который является основание вашего приложения).
Затем вы можете использовать Meteor Tinytest, который отлично подходит для тестирования приложений Meteor.
Ответ 11
Ive успешно использовал xolvio: огурец и скорость для моего тестирования. Работает очень хорошо и работает непрерывно, поэтому вы всегда можете видеть, что ваши тесты проходят.
Ответ 12
Метеор + TheIntern
Как-то мне удалось проверить приложение Meteor с помощью TheIntern.js.
Хотя это по моей потребности. Но я думаю, что это может привести кого-то в правильном направлении, и я делюсь тем, что я сделал, чтобы решить эту проблему.
Существует функция execute
, которая позволяет нам запускать JS-код, который может быть доступен для браузера window
и, следовательно, Meteor
.
Хотите узнать больше о execute
Вот как мой test suite
ищет Функциональное тестирование
define(function (require) {
var registerSuite = require('intern!object');
var assert = require('intern/chai!assert');
registerSuite({
name: 'index',
'greeting form': function () {
var rem = this.remote;
return this.remote
.get(require.toUrl('localhost:3000'))
.setFindTimeout(5000)
.execute(function() {
console.log("browser window object", window)
return Products.find({}).fetch().length
})
.then(function (text) {
console.log(text)
assert.strictEqual(text, 2,
'Yes I can access Meteor and its Collections');
});
}
});
});
Чтобы узнать больше, это мой gist
Примечание. Я все еще очень рано с этим решением. Я не знаю, могу ли я сделать сложное тестирование с этим или нет. Но я очень уверен в этом.
Ответ 13
Скорость еще не созрела. Я столкнулся с проблемами setTimeout, чтобы использовать скорость. Для тестирования на стороне сервера вы можете использовать этот пакет.
Это быстрее скорости. Velocity требует огромного времени, когда я тестирую любую спецификацию с логином. С кодом Jasmine мы можем протестировать любой метод и публикацию на стороне сервера.