资讯专栏INFORMATION COLUMN

Ember.js第七章——测试

iliyaku / 2573人阅读

摘要:集成测试集成测试是处于单元测试和验收测试之间的测试。集成测试目的是验证客户端与全系统交互,所有单元测试,以及微观层面具体代码的算法逻辑是否都能通过。集成测试用来验证应用程序各个模块相互关系,比如若干个控件之间的行为。

测试简介

测试是Ember。js框架开发环节中很重要的一环。

现在假设你正在利用Ember框架开发一个博客系统,这个系统包含userpost模型,有登录及创建博客的操作。最后假设你希望在你的程序里实现自动化测试。

测试类型

你一共需要下面这3种类型的测试:

验收测试Acceptance

单元测试Unit

集成测试Integration

验收测试 Acceptance Tests

验收测试是用来确保程序流程正确,且各类交互特性符合用户预期的测试。

验收测试用于确认项目基本功能,保证项目核心功能没有退化,确保该项目的目标得以实现。测试应用的方式和用户与应用程序的交互方式是一致的(比如填写表单,点击按钮)。

在上述的场景中,可能会做如下的验收测试:

用户可以通过登录表单登录。

用户可以创建博客。

当成功保存一篇博客文章后,程序会返回博客列表给用户。

访客不能访问管理界面。

单元测试 Unit Tests

单元测试是针对程序中的最小可测试单元进行的测试,比如一个类或者一个方法。该测试可以编写与程序逻辑相对的语句来测试相关单元

下面是一些单元测试的具体例子:

用户姓名是由对应的姓和名组合而成的。

把博客请求数据正确序列化转换为一个博客模型对象。

正确格式化博客时间。

集成测试 Integration Tests

集成测试是处于单元测试和验收测试之间的测试。集成测试目的是验证客户端与全系统交互,所有单元测试,以及微观层面具体代码的算法逻辑是否都能通过。

集成测试用来验证应用程序各个模块相互关系,比如若干个UI控件之间的行为。也可以用于确认数据和动作在系统不同的部件中被正确的传递和执行,同时在给定假设条件下,可以提供系统各部件配合运行的情况。

我们建议对每个组件都进行集成测试,因为组件各个组件以相同的方式运行在系统的上下文中,并且组件之间也有相互影响,包括从模板中渲染组件、接收组件生命周期回调函数。

集成测试示例如下:

用户姓名和日期正确的显示在每篇博文上

禁止用户在标题栏内输入超过50个字符

当提交一个没有标题的博客时,显示红色提醒并给出需要标题的错误信息

博客列表滚动到最顶端显示最新博客

测试框架

QUnit是本手册的默认测试框架,但是Ember.js也支持其他第三方的测试框架。

如何运行测试

在命令行输入ember test来运行测试。也可以通过ember test -server命令,在每次文件改动后,重新运行测试。

在本地开发项目的时候可以通过访问/tests/index.html来运行你的测试,前提是你需要使用命令ember server运行了你的项目。如果你是使用这种方式有一点需要注意:

通过ember server运行的测试,是在开发环境下的测试,调用的是开发环境下的参数

通过ember test --server运行的测试,是在测试环境下的测试,调用的是测试环境下的参数,比如加载的依赖也是不同的。因此我们推荐你使用ebmer test --server来运行测试。

指定测试

使用--filter选项来指定运行部分测试。比如:快速运行当前工作的测试使用命令ember test --filter="dashboard"、运行指定类型的测试使用命令ember test --filter="integration"、可以使用!来排除验收测试ember test --filter="!acceptance"

更多详细内容请看下面的文章:

测试简介

验收测试

单元测试

测试组件

测试控制器

测试路由

测试模型



2.7.0的文档直接放在emberjs.ddlisting.com。可能后续就不放Ember Teach,Ember Teach就主要用于发布与Ember相关的文章了。

水平有限,欢迎指正。你也可以直接在https://github.com/emberjschina/emberjs_guides_v2.7.0提交Requests Pull,我们会以最快时间审核通过后更新到本站。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90992.html

相关文章

  • Day 19: EmberJS 入门指南

    摘要:在文件夹内创建,内容如下创建,内容如下使用安装依赖在的头部加入调用命令,同时在你的默认浏览器中打开。最后,我们更新下,给每个报道添加链接修改完毕地后,可以在浏览器中直接看到结果。 编者注:我们发现了有趣的系列文章《30天学习30种新技术》,正在翻译,一天一篇更新,年终礼包。下面是第19天的内容。 到目前为止,我们这一系列文章涉及了Bower、AngularJS、GruntJS、P...

    awesome23 评论0 收藏0
  • Ember.js 资源列表

    摘要:最近我应邀为朋友写一个,前期在考虑技术栈的时候选择了。眼下第一目标是把这个应用写完,在此过程中本着打破砂锅问到底的精神,我在网上找到一些很不错的的资源。于是记录于此本列表正持续更新中。 最近我应邀为朋友写一个 Web App,前期在考虑技术栈的时候选择了 Rails API+Ember.js。考虑到这个应用的规模,选择 Ember.js 或许有点重,但是做公司的项目一直都在用 Angu...

    Yangyang 评论0 收藏0
  • 使用service实现登录、权限控制

    摘要:就没必要动牛刀,创建一个数据库了执行完后,在目录下创建一个程序,自动植入到当前项目中,访问的和与访问域名端口一致。就没必要动牛刀,创建一个数据库了本篇博文将为你介绍如何使用实现权限控制,我会创建一个简单的登录示例加以说明。 文章来源:http://blog.ddlisting.com 官网对于登录、用户权限的介绍只有一段简单的说明,并没有详细说明如何使用service实现权限控制。下面...

    Aomine 评论0 收藏0
  • 模型高级特性,引入模型关联关系

    摘要:创建模型并设置关联关联关系设置模型关系一个对应多个,一个对应多个。手动在中增加关联关系。并且是实现了数据表之间的关联关系,比如一个对应多个,如下图。 文章来源:模型高级特性,引入模型关联关系 接着前面五篇: 环境搭建以及使用Ember.js创建第一个静态页面 引入计算属性、action、动态内容 模型,保存数据到数据库 发布项目,加入CRUD功能 从服务器获取数据,引入组件 前言 ...

    raise_yang 评论0 收藏0
  • [Tips on Ember 2] UI 布局与应用状态的关系处理

    摘要:如果说传统的前端开发是以页面为中心来入手的话,那么现代的应用开发就是以状态为中心来着手设计和开发的。初步分析路由是怎么管理状态的复杂的话题简单说在中,应用的每一个可能的状态都是通过体现的。 引子 SPA(单页面应用)的核心是什么? 自该类型应用诞生以来我最多思考的问题就是这个。现在前端 SPA 框架满天飞,许多不是框架的也被称作框架,究竟有什么代表性的层(layer)能让一个系统称得上...

    wayneli 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<