Rspec: everyday-rspec实操: 第10章测试其他功能,第11章TDD

10.测试文件上传

作者推荐的Paperclip,官方维护组已经不推荐使用deprecated。

推荐使用rails自带的 ActiveStorage.

Active Storage:

推进文件上传到云存储,并附加这些文件到Active Record object。它 和本地驱动服务一起用于开发和测试。也支持反射文件到附属服务作为备份backups and migrations。

http://guides.rubyonrails.org/active_storage_overview.html

首先,编写针对文件上传功能的测试(用的是Capybara的方法),并提供要使用的文件。attach_file "Attachment", "#{Rails.root}/spec/files/attachment.jpg"

接着,指定测试专用的上传路径。

最后,让 RSpec 在测试结束后清理文件。spec/rails_helper.rb

RSpec.configure do |config|

# 省略这个块里的其他内容 ...

# 测试组件运行完毕后清理上传的文件

config.after(:suite) do

FileUtils.rm_rf(Dir["#{Rails.root}/spec/test_uploads/"])

end

end

这是在功
能层测试文件上传的三个基本步骤。如果你用的不是 Paperclip,参阅上传库的文档,找出实现这三步的
方法。



10.3 测试电子邮件发送

大概浏览。会用到ActiveJob::TestHelper的方法

10.4  web 服务的测试,(??没看)




第 11 章 迈向测试驱动开发

首先编写测试,然后编写能
让测试通过的代码,最后重构,从长远利益重新审视代码的实现方式。

在这个过程中,测试影响代码选择,力求写出没有缺陷的软件,而且新需求出现时,也不担心更新会破坏现有功能。

pending: (adj) waiting to be decided or settled.

11.1 feature test

? 添加一个按钮,用于把项目标记为已完成;

? 用户登录后控制台中不显示已完成的项目。

第一,在动手之前,先运行整个测试组件,确保添加功能之前所有测试都能通过

然后,新建feature test, 并列出要做的事情,用注释标记在scenario中。
之后,编写测试代码,把注释替换为真正的步骤。
11.2 from red to green
再次运行测试rspec spec/features/xxx_spec.rb --tag foucs
发现? 
Failure/Error: click_button "Complete"   

Capybara::ElementNotFound:

Unable to find visible button "Complete"
编写缺少的程序代码 视图中的按钮
然后在运行测试发现?
Projects user completes a project  

Failure/Error: expect(project.reload.completed?).to be true

NoMethodError:

undefined method `completed?‘ for #<Project:0x00007f97b4392698>
根据RSpec的提示,根据业务逻辑编写代码,不同的业务逻辑意味不同的实现方法。
这里是通过用户的操作,点击按钮来判断project.completed?,然后储存这个状态。
所以应该为Project添加属性completed: boolean。储存项目的状态。				

$ bin/rails g migration add_completed_to_projects completed:boolean
$ bin/rails db:migrate

原文地址:https://www.cnblogs.com/chentianwei/p/9071330.html

时间: 2024-11-10 13:29:08

Rspec: everyday-rspec实操: 第10章测试其他功能,第11章TDD的相关文章

Git简易实操教程

一.Git简介 1.分布式版本代码控制工具 2.多个开发人员协调工作 3.有效监听谁做出的修改 4.本地及远程操作 二.Git下载 Git下载地址:https://git-scm.com/downloads 检验git是否安装成功:在终端输入指令 git --version(查看git的版本) 三.Git的基本命令 git init:初始化本地仓库 git add <file>:添加文件到本地仓库 git status:查看文件状态 git commit:提交项目到本地仓库 git remot

10章、11章

一.典型用户和典型场景 Visual Studio的经典用户 怎样定义典型用户 从典型用户到场景 用例 规格说明书 功能说明书 定义好相关的概念 规范好一些假设 避免一些误解,界定一些边界条件 描述主流的用户/软件交互步骤 一些好的功能还会有副作用 服务质量的说明 功能驱动的设计 构造总体模型 构造功能列表 制定开发计划 功能设计阶段 实现具体功能 11章 分析和设计方法 图形建模和分析方法 表达实体和实体之间的关系 表达数据的流动 表达控制流 统一的表达方式 其他设计方法 形式化的方法 文学化

做一次真正落地的亚马逊和独立站实操分享

当我敲了这几个大字的时候,我自己有点战战兢兢.为什么这么说呢?因为我自己还有很多需要提升的地方,我经常在群里嘚瑟,每次的分享确实是有很多欠缺,不怎么在群里活动的高手对我的分享肯定嗤之以鼻.虽然我觉得自己能力不足,但是我喜欢分享,就像咋们知无不言域名取的一样--知无不言,我喜欢把自己知道的讲给大家听. 那么,可能有些人对我这番话报以赞赏的态度.诚然,每个人都是一个独立的个体,没有必要更没有义务去分享自己所知道的,包括我也是,但是我尽量地去分享我关注亚马逊和独立站推广的实操和心得给大家方向.毕竟别人

DIV+CSS实操五:经管系网页内容模块内容添加(二)

继续接着DIV+CSS实操系列的博文添加代码:DIV+CSS实操一:经管系网页总体模块布局,DIV+CSS实操二: 经管系网页添加导航栏和友情链接栏,DIV+CSS实操三:经管系网页内容模块添加标题栏和版权信息模块和 DIV+CSS实操四:经管系网页内容模块内容添加(一).我们还是添加内容版块的内容,这一次是中间部分和右半部 分.由于中间的图片无缝滚动需要JS实现,我们后续加上. HTML代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr

Python实操二

实操一: 1.用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao'] name=['alex','wupeiqi','yuanhao'] m = map(lambda name:name+"_SB",name) print(list(m)) ------------输出结果------------------ ['alex_SB', 'wupeiqi_SB', 'yuanhao_SB'] 2.用map

打造网络营销利器-第1篇-TDK设置实操-网站优化进阶

网络营销如何做,才能从网络挖掘出大量的新业务?互联网时代你还停留于没业务就扩充销售队伍的思想,你就OUT了! 本系列文章将用通俗的语言介绍网站运营大牛们的惯用手法,网站SEO并没有你们想象那么难!重点是了解并坚持去做! 上一篇文章<中小企业网站优化技巧-1-网站的TDK>介绍了网站的TDK是什么(标题.描述.关键词),那么本文,将以具体产品为例介绍下TDK的实际操作. 首先,登录进网站系统后台,从左边菜单栏找到产品管理==>添加产品,点击打开添加产品的页面: 然后第一步,选择您产品对应的

nginx实操(2)配置文件&内核&日志说明

优化内核参数 cat /etc/sysctl.conf net.ipv4.ip_forward = 0 表示开启路由功能,0是关闭,1是开启 net.ipv4.conf.default.rp_filter = 1 开启反向路径过滤 net.ipv4.conf.default.accept_source_route = 0 处理无源路由的包 net.ipv4.tcp_max_tw_buckets = 6000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT

基于php+mysql的sql注入攻防实操

摘要: 基于php+mysql平台的sql注入攻防的实操,提供较详细的ubuntu平台上的操作步骤,方便练手. 使用的平台: Ubuntu 12.04,php 5.3.10, mysql Ver 14.14, Apache/2.2.22 步骤: 1. 在ubuntu上安装Apache,mysql,具体过程自行百度: 2.1 首先熟悉如何再mysql中建立数据表?包括用户名和对应的密码:并且熟悉其中的查询命令:完成查询测试: 2.2 完成php端的代码,完成php和mysql的链接:完成链接查询测

Docker 学习笔记【3】 Docker 仓库、数据卷、数据卷容器,网络基础实操。高级网络配置学习

Docker 学习笔记[4] 高级网络配置实操,实战案例实验 =========================================================================== Docker 学习笔记[2] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,记录开始 =========================================================================== 被格式化的脚本内容: #开头代表