首页 > 解决方案 > 为什么 RSpec 测试放在 `module` 关键字中?

问题描述

首先,我不是在尝试测试模块。我正在单个模块中测试类。这个 SO question/answer没有描述我正在查看的代码,因此很难与我的好奇心相提并论。

我正在关注本教程,该教程已过时;但是,这是一个建议的资源。

我的具体问题是:

为什么将spec文件中的RSpec语言放在里面module TicTacToe,像这样:

require 'some_file'

module TicTacToe
  #RSpec examples here
end

我对 RSpec 和一般编码非常陌生,所以我不熟悉在 RSpec 中编写测试的约定;这个组织有必要吗?过时了?我的测试通过了,一切都按预期进行;我只是在尝试学习如何编写测试,大多数规范都以RSpec.describe Foo do或开头describe Bar do

标签: rubyrspec

解决方案


我没有module在规范文件中看到过这样的使用。我怀疑这是一个非常古老的教程。(Wordpress 有用地显示它是从 10 月 25 日开始的,但没有提及是哪一年。但最旧的评论来自 2014 年)

我建议你找一个更新的教程。

关键字在describe这里更合适。几年前我使用的大多数规格看起来像这样:

RSpec.describe TicTacToe::SomeClass, type: :model do
  #RSpec examples here
end

或者更现代,rspec 从 spec 文件的路径中识别类型(模型、控制器等):

# spec/model/tic_tac_toe/cell.rb

describe Cell do
  let(:first_cell) { described_class.new }
  #RSpec examples here
end

推荐阅读