博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rails Controller中的concerns测试编写
阅读量:7011 次
发布时间:2019-06-28

本文共 1150 字,大约阅读时间需要 3 分钟。

最近在完善项目中的测试代码,常见的Controller以及Model层的测试代码写的比较熟悉了。在查看测试覆盖率报告时发现Controllerconcerns下文件基本没有测试,然后自己对如何测试concerns也不是很了解,就搜索了资料记录下来,方便后续回顾。

concerns目录下一般来说是一些独立的逻辑模块或者是重复使用的功能模块,这样可以提升代码的可读性以及维护性。下面是一个例子:

# /app/controllers/concerns/error_trackable.rbmodule ErrorTrackable  extend ActiveSupport::Concern      def error    p "Hello, Ruby!"        true  endend复制代码

我们在使用的时候可以在controller中引入即可

class AdminController < ApplicationController  include ErrorTrackable    end		复制代码

然后通过编写AdminController的测试代码也可以对concerns进行测试,但是现在这样就会导致代码过于耦合,一旦AdminController中不再引入相关文件,就会导致测试代码无法通过。另外一点我们可能需要在所有引入相关文件的地方都对此编写测试代码,保证逻辑正确性,但是这不符合DRY的原则啊。

所以我们通过构建一个假的controller,引入相关的文件功能,然后对这个构建的''假的"controller编写测试代码进行相关的测试,测试代码如下:

require 'test_helper'class ErrorTrackableTestController < ApplicationController  include ErrorTrackableendclass ErrorTrackableTestControllerTest < ActionDispatch::IntegrationTest  test "should get error" do    res = ErrorTrackableTestController.new.error    assert_equal true, res  end  end复制代码

这样子我们就可以对concerns中的代码进行相关的测试了,代码也不会依赖于我们原来的逻辑,另外保证了代码的测试覆盖率,终于可以愉快的玩耍了。

结语

最后,文章发布于个人博客,地址: ,欢迎关注,不定时更新。

转载于:https://juejin.im/post/5b80090fe51d4538e227609f

你可能感兴趣的文章
全域赋能和智慧全球,阿里巴巴大数据技术前瞻与案例
查看>>
90%炒币者亏钱,区块链“撒币时代”结束了
查看>>
冬天来了,让Sleep System智能床垫帮你暖床!
查看>>
2017洛客大会成功落幕, 全球“洛客”开启“想象力时代”
查看>>
关于区块链革命你必须知道的事实
查看>>
开源 |蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构...
查看>>
Go语言之基准测试
查看>>
win10_x64更新错误解决: 安装一些更新时出现问题,但我们稍后会重试。如果持续出现这些问题,并且你想要搜索Web或联系支持人员以获取相关信息,以下信息可能会对你有帮助:...
查看>>
keepalived vrrp_script的一些实例配置
查看>>
《数字逻辑设计与计算机组成》一 3.4 减法器
查看>>
Chrome浏览器也开启Material Design风格
查看>>
《系统分析与设计方法及实践》一2.1 软件生命周期
查看>>
Oracle Logminer 日志挖掘
查看>>
印媒:全球科技巨头竞相角逐印度“智能城市”项目
查看>>
《Servlet和JSP学习指南》一2.2 隐藏域
查看>>
[干货]基础机器学习算法
查看>>
12月14日全球域名商解析量22强:爱名网升至十七
查看>>
全球域名商解析新增量20强:中国占据7个席位
查看>>
在python中获取当前位置所在的行号和函数名
查看>>
如何导出PPT内的所有图片做素材(IT实用技巧)
查看>>