ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-似乎找不到有关测试Cycle.js应用程序的资源

2019-10-27 12:34:16  阅读:216  来源: 互联网

标签:testing web reactive-programming cyclejs javascript


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

解决方法:

Cycle.js.org开始:

Sources and sinks can be easily used as 07001. This also means testing is mostly a matter of feeding inputs and inspecting the output. No deep mocking needed. Your application is just a pure transformation of data.

实际上,从Cycle.js核心的GitHub issue版本开始,Cycle.js的作者AndréStaltz解释说:

Testing Cycle.js code is basically just about testing 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’)之类的意图).

这是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上进行全局搜索,以获取模拟DOMSource here和模拟DOMResponse here
那么您可以进行Cycle.js测试的find some examples.

您也可以检出Awesome Cycle.js回购的Testing section.

旁注:很快我们将能够编写Marble Tests.不幸的是,目前仅支持rxjs v4的Cycle.js 6无法实现.
大理石测试是rxjs v5的新功能.参见:Rxjs testing – is it possible to use marble diagrams also in RxJs 4?

标签:testing,web,reactive-programming,cyclejs,javascript
来源: https://codeday.me/bug/20191027/1944445.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有