加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 打破你的RSpec测试

发布时间:2020-12-17 03:21:11 所属栏目:百科 来源:网络整理
导读:我的一些Rspec测试真的很大(2000-5000行).我只是想知道是否有人曾尝试将这些测试分解为满足以下条件的多个文件: 有一种系统的方法来命名和放置测试(例如,方法A-L gos到user_spec1.rb). 您可以运行单个文件,实际运行其他文件中的其他测试. 您仍然可以在文件
我的一些Rspec测试真的很大(2000-5000行).我只是想知道是否有人曾尝试将这些测试分解为满足以下条件的多个文件:

>有一种系统的方法来命名和放置测试(例如,方法A-L gos到user_spec1.rb).
>您可以运行单个文件,实际运行其他文件中的其他测试.
>您仍然可以在文件中运行特定上下文
>并且,很高兴,RubyMine可以运行特定的测试(以及所有测试).

就目前而言,我已经成功地做到了

#user_spec.rb
require 'spec_helper'
require File.expand_path("../user_spec1.rb",__FILE__)
include UserSpec

#user_spec1.rb
module UserSpec do
  describe User do
    ..
  end
end

解决方法

如果您的规格太大,那么您的模型可能太大了 – 因为您在此处使用“UserSpec”,您可以说您的用户类是“ God class”.也就是说,它做得太多了.

所以,我会把它分解成更小的类,每个类都有一个单一的责任.然后,单独测试这些类.

您可能会发现您的User类知道如何在系统中执行大多数逻辑 – 这是一个容易陷入的陷阱,但如果您将逻辑放在以用户为参数的类中,则可以避免.此外,如果你坚持遵守demeter定律(你的用户类只能触及它下面的1级,而不是两级).

进一步阅读:http://blog.rubybestpractices.com/posts/gregory/055-issue-23-solid-design.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读