ruby - 为什么 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
解决方案
我没有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