首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

精通 MEAN 测试 MEAN 堆栈(1)

精通 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                目录中。如果无法立即看到您测试中的错误来源,不要删除测试;可将它暂时移出到该目录外。
在能够运行干净的测试后,是时候分解该流程了。
返回列表