您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    React全家桶与前端单元测试艺术(5)
    时间:2017-09-10 21:33 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

      const gen = login({ name'John'password'super-secret-123'}) 

     

      const request = gen.next().value 

      t.deepEqual(request, call(fetch'/login', { method: 'POST', body: { name'John'password'super-secret-123'} })) 

      const response = gen.next({ token: 'non-human-readable-token' }).value 

      t.deepEqual(response, put({ type: 'login/SUCCEEDED', token: 'non-human-readable-token' })) 

      const failure = gen.throw('You code just exploded!').value 

      t.deepEqual(failure, put({ type: 'login/FAILED', error: 'You code just exploded!'})) 

    }) 

    你看我们的测试连异步操作都还可以无耻地判等。call就是以某些参数调用某个函数,put就是发事情。

    可以试着把fetch掩盖成空函数,你可以发理想际上反作用基本没发作,“fetch究竟是个啥”对测试一点影响都没有。你能够发现了,其实saga就是用数据结构表示作用,而不着急执行,在这里又走回幂等的老路了。这和React Virtual DOM的思绪异曲同工。

    结语

    首先是文章扫尾提到的TL;DR的内容。函数是个好东西,测函数不同等“测1+1=2”这种没营养的单元,函数是可以包含很大上下文的。这种输入输入的模型既复杂又有效。

    我们消灭了mock,增加了依赖,并发了测试,加快了速度,降低了门槛,增加了测试途径等等。假设你的React项目原来在TDD的边缘摇晃不定,如今是时分入一发这种唯快不破了。

    全家桶让Model/View/Async这三者之间的边界变得明晰,任由业务变更,它们之间的职责是不会相互替代的,这样你测它们的时分才更容易。后端之所以测试波动是由于有API。所以想让前端好测也是一样的思绪。

    文中好屡次提到“幂等”这个概念,幂等可以让你增加测试的case,写代码更有底气。抛开测试不谈,代码幂等的中央越多,顺序越可控可预期。其实细心思索一下我们的实践项目,大部分业务都是十分确定的,并没有什么随机要素。为什么最后还是会出现很多随机现象呢?

    声明优于命令,描画发作什么、想要什么比亲身指点详细步骤好。

    音讯机制优于调用机制。Smalltalk > Simula。其实RESTful API一定水平上也是音讯。复杂的对象直接相互作用是完全没成绩的,人作为复杂对象主要经过言语媒介来交流,听到内容思索其中的含义,而不是靠肢体接触,或许像连体婴儿那样共享器官。所以才有一句俗语叫“你的对象都想成长为Actor”。

    从View的几种测试里我们也可以看到,测试并不是只要测或许不测这两种选择,我们老提测试金字塔,意思是测试可多可少,不同层级的测试保持正金字塔外形比较安康,像明天我们说的就可以大幅加宽你测试金字塔的底座。所以你的项目有能够测试过少,也能够测试过度,所以时间可以静态调整。

    没用全家桶的项目可以把“大Model小View”的思想拿走,这样更容易于专注价值。尽量抽出Model层,不要把逻辑写在VM里,看那样似省事,行数在测试里都还回来了。

    【编辑引荐】

    开发者必备的顺序调试利器,来找到适宜你的那一款!

    Google晋级App Engine防火墙:方便开发者限制特定IP

    Python开发者面向文档编程的正确姿态

    八款常用的Python GUI开发框架引荐

    Web 开发者需求知道的 12 个终端命令

    (责任编辑:admin)