Я пытался найти руководство по тестированию приложения Cycle.js, но, похоже, не нашел его. Может ли кто-нибудь указать мне руководство или привести некоторые примеры?Не может найти ресурсы о тестировании приложения Cycle.js
ответ
Существует это руководство плюс много полезных дэвов по циклу основной дифракционной решетки: http://staltz.com/how-to-debug-rxjs-code.html
Cycle.js.org От:
Источники и приемники могут быть легко использованы в качестве Adapters and Ports. Это также означает, что тестирование в основном связано с подачей входов и проверкой вывода. Никакой глубокой насмешки не нужно. Ваше приложение представляет собой чистое преобразование данных.
Действительно, из этого GitHub issue из ядра Cycle.js, автор Cycle.js Андре Staltz объясняет, что:
Тестирование Cycle.js код в основном только о тестирования Наблюдаемые
Простейшие испытания имеют форму:
// Create the mocked user events
const userEvents = mockDOMSource(...);
// Use them in your tests against `main`
const sinks = main({DOM: userEvents});
sinks.DOM.subscribe(function (vtree) {
// make assertions here on the vtree
});
Обратите внимание, что здесь мы используем mockDOMSource
. rx.js v5.3.0 выпущен mockDOMResponse
, который был позже переименован в mockDOMSource
. Это функция, которая позволяет легко издеваться над взаимодействием пользователей (макетировать намерения, такие как DOM.select('.foo').events('click')
).
Вот example:
test('CounterButton should increment number by 1 when clicked', t => {
t.plan(4)
const DOM = mockDOMSource({'.inc': {click: Observable.repeat({}, 3)}})
const sinks = CounterButton({DOM})
sinks.DOM
.take(4)
.toArray()
.subscribe(vtrees => {
const counts = vtrees.map(vt => vt.children[0].text.match(/\d+$/)[0])
t.equal(counts[0], '0', 'button has count 0')
t.equal(counts[1], '1', 'button has count 1')
t.equal(counts[2], '2', 'button has count 2')
t.equal(counts[3], '3', 'button has count 3')
})
})
Если вы ищете во всем мире в GitHub для mockDOMSource
here и mockDOMResponse
here тогда вы можете findsomeexamples тестов Cycle.js.
Вы также можете проверить Testing section из Awesome Cycle.js репо.
Sidenote: Скоро мы сможем написать Marble Tests. К сожалению, это невозможно в Cycle.js 6, которое поддерживает только rxjs v4. Мраморные тесты - это новая функция для rxjs v5. См .: Rxjs testing - is it possible to use marble diagrams also in RxJs 4?