4

我一直在尝试搜索有关测试 Cycle.js 应用程序的指南,但似乎找不到。有人可以指点我一个指南或提供一些例子吗?

4

2 回答 2

4

来自Cycle.js.org

Sources 和 sinks 可以很容易地用作Adapters 和 Ports。这也意味着测试主要是提供输入和检查输出的问题。不需要深度嘲讽。您的应用程序只是数据的纯粹转换。

确实,Cycle.js 核心的这个GitHub 问题中,Cycle.js 的作者 André Staltz 解释说:

测试 Cycle.js 代码基本上只是测试 Observables

最简单的测试采用以下形式:

// 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'))的功能。

这是一个例子

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 此处mockDOMResponse 此处, 则可以找到Cycle.js 测试的 一些 示例

您还可以查看Awesome Cycle.js 存储库的测试部分

旁注:很快我们就可以编写Marble Tests了。不幸的是,目前仅支持rxjs v4的 Cycle.js 6 无法做到这一点。Marble 测试是 rxjs v5 的一个新特性。请参阅:Rxjs 测试 - 是否也可以在 RxJs 4 中使用大理石图?

于 2016-03-25T10:05:53.267 回答
1

有本指南以及有关循环核心 gitter 的许多有用的开发人员:http: //staltz.com/how-to-debug-rxjs-code.html

于 2016-01-24T16:36:32.660 回答