Board logo

标题: 精通 MEAN 测试 MEAN 堆栈(1) [打印本页]

作者: look_w    时间: 2018-11-13 18:50     标题: 精通 MEAN 测试 MEAN 堆栈(1)

User Group List and Information (UGLI)                应用程序自您启动它以来已进行了许多改进。您将本地数据存储在应用程序中,通过 RESTful Web 服务拉入远程数据。该应用程序支持一种移动就绪的  ,而且它  ,以便充分利用搜索引擎优化 (SEO)。对于  ,用户可以创建一个本地的专用帐户,或者(通过 OAuth)重用一个存储在别处的现有帐户。
但是,没有一个坚固的测试套件作为您的安全网,您可能无法放心地将 UGLI 应用程序部署到生产中,对吧?是的。这在专业上是不负责任的。我同意 Neal                Ford(作家和国际演讲家)将测试称为 “软件开发的工程严谨度检查”。只要我开始接洽新客户,就会首先查看他们的测试套件,然后再查看其他任何部分                —                甚至他们的设计文档。他们的测试的质量、数量和全面性与其软件开发流程的成熟度具有直接的关联。健康、经过积极维护的测试套件是项目总体健康的首要保证。类似地,任何鼓励可测试性的框架我都会优先考虑。AngularJS                是测试人员编写的,我不得不考虑另一种更容易测试的现代 Web 框架。                 堆栈扩展了开箱即用的可测试性,以包含服务器端逻辑的测试。
“AngularJS 是测试人员编写的,我不得不考虑另一种更容易测试的现代 Web                    框架。”

在   的开头部分,我介绍了 MEAN 堆栈的基本构建块 —                    组成您应用程序的生产组件的多个松耦合的小组件。对于将用于测试您应用程序并使其适合生产的各种框架和库,是时候对它们做同样的事了。我将介绍  :一个可插入的测试运行器,它使得跨任意多个真实 Web                浏览器(包括智能电话、平板电脑和智能电视)运行在任何测试框架中编写的测试,并以各种不同格式返回结果变得非常容易。在此过程中,您将使用   执行客户端测试,使用   执行服务器端测试,使用   执行代码覆盖测试。
运行您的测试因为您已在使用 MEAN.JS 框架标配的 Yeoman 生成器,所以您已有多个已生成的测试。键入 grunt test                来运行它们。您会看到类似清单 1 的结果。
清单 1. 运行生成的测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ grunt test
Running "env:test" (env) task

Running "mochaTest:src" (mochaTest) task

Application loaded using the "test" environment configuration

Running "karma:unit" (karma) task
INFO [karma]: Karma v0.12.31 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.8 (Mac OS X)]: Connected on socket 6zkU-H6qx_m2J6lY4zJ8 with id 51669923
PhantomJS 1.9.8 (Mac OS X): Executed 18 of 18 SUCCESS (0.016 secs / 0.093 secs)

Done, without errors.




如果遇到错误或警告,不用担心;这些测试在最初实现时是为匹配各种模型和控制器而搭建的。如果您更改正在测试的代码 (CUT)                而没有更新相应的测试,那么您可能遇到了错误。
每次单元测试失败都让我很兴奋。单元测试就像您代码库的断路器。在您家里,您将断路器放在电网与您昂贵的个人电子设备之间。这样,当一个可能有损害的电涌通过电线传入时,您只会损失一个                35 美分的断路器,而不是一台价值 3,500 美元的笔记本电脑。类似地,单元测试的每次破坏都是您看到的一个错误,而用户不会看到这些。
如果可以的话,应该花费一些时间来修复您被破坏的测试。一个常见的错误来源是测试对已删除或更改的字段名称的依赖性。服务器端测试在 app/tests                中。客户端测试存储在每个 public/module 的 test                目录中。如果无法立即看到您测试中的错误来源,不要删除测试;可将它暂时移出到该目录外。
在能够运行干净的测试后,是时候分解该流程了。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0