在rails中,针对单个controller中的各个action进行的测试,叫做功能测试。controller处理web的请求,将请求的响应render到view中。
单元测试针对model,主要是测试model中的业务规则,测试model中的验证validates规则。 单元测试的文件存放在test/unit文件夹,针对user的model的单元测试文件是user_test.rb。
fixtures就是用来创建模拟数据的。 这些数据会被插入测试数据库,因此不能模拟数据库不存在的属性。 模拟数据可以在单元测试unit test和功能测试functional test中使用,通过表名(:模拟实体名)就可以访问模拟实体。users(:devid)就是一个user,然后users(:devid).name就可以访问name属性的值。
本章我们从一个cucumber的逻辑错误开始。从外部的cucumber周期,转向内部的rspec周期。 本章我们使用RSpec来完成了一个red/green/refactor的周期。 这就是BDD的周期。从外到里的驱动开发,从使用cucumber描述的业务scenario,到使用rspec描述的内部对象。
我们先在.feature文件中写一个feature的scenario,已经scenario的steps,然后在step_definitions中定义Given,When,Then,然后在通过测试cucumber .feature文件来驱动我们编写实现代码。 当目前为止,我们已经学会使用cucumber从外部描述一件事。在接下来的章节中,我们将会进行从外到里的工作方式,使用RSpec来驱动单个对象的外部行为。
缩小用户故事的范围,保证留下的用户故事和一次发布的目标匹配即可。 为一个interation选择用户故事,不要再一个interation中放入太多的用户故事,不要希望一个interation来完成所有的用户故事。 验收准则,我们通过写cucumber feature来描述用户故事。我们在迭代计划会议期间做这件事,使用这些来确定和修改我们的预估。 scenario outline,使得我们减少大量的重复,更加的DRY。
TDD(Test-Driven Development)测试驱动开发。 在编写代码之前先编写一个测试,这时候测试是失败的,red,因为还没有写对应的实现代码。然后开始编写实现的代码,然后跑刚才写的测试,直到测试通过,green。 然后我们就重构我们的代码,refactor,然后再次跑我们的测试,green重构成功,red重构失败。失败也没有关系,继续重构。而且有了测试的保证,我们可以很放心的重构。 TDD偏激的做法是,在没有编写测试之前,绝不写一行代码。软件开发,测试先行。用测试来驱动开发。 BDD(Behavior-Driven Development)行为驱动开发。 在应用级别,项目的利害关系人通常不关心数据被持久化到什么地方,什么格式,什么存储类型。当然不是说他们不关心数据,而是说他们更关心他们保存的数据,在他们需要的时候可以获取出来。
Rails开发细节《九》Rails的测试
常用命令介绍。
ruby,class,variable,class method,instance method,class variable,instance variable,singleton
ckeditor是一款嵌入网页的富文本编辑器,是一种所见即所得的编辑器,就是你编辑的时候看见的样式,就是将来显示的样式。 自带了常见的文本编辑功能。
Rails开发中可能会用到的组件,Ruby && Rails开发资源。
时区以及日期的格式化是每个程序员的必修课,就像字符串的各种处理一样重要,而且使用频率很高。 rails默认就是写入utc时间,然后读取也是utc时间。 设置config.time_zone只能保证写入数据库的时间是local,就是保证创建对象的时候created_at和updated_at使用设置的本地时间。 但是读出来的时候还是有可能是utc时间,有可能需要在界面上转换的。 rails推荐使用utc时间,这样就统一了,只是在界面显示的时候格式化为本地时间。 对于任何应用来说,遇到时区问题,都应该考虑语言本身和存储本身,甚至是操作系统本身的时区设置和一些默认值,这样才能最终较好的解决时区问题。
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号