码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-05-22 14:43:27      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:expect   电子   存储   专用   expec   控制   自带   otf   其他   

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

 




 

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

标签:expect   电子   存储   专用   expec   控制   自带   otf   其他   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!