Ruby类继承测试遇TypeError: superclass must be a Class (Module given)如何解决?
解决Ruby嵌套类测试中的TypeError问题
核心问题与修复步骤
- 修正类定义的语法错误
你写的代码里用了大写的Class,这不符合Ruby的语法规范——定义类的关键字是小写的class。错误的写法会导致A未被正确识别为类,Ruby会误将其当作模块处理,从而触发继承错误。
修复后的类定义可以选以下两种写法:
# 基础类定义 class A end # 写法一:外部嵌套定义子类 class A::B < A end
或者更推荐的内部嵌套写法,避免歧义:
class A # 在A内部定义子类B,明确继承关系 class B < A end end
- 确保测试文件正确加载源码
测试时要先加载包含A和A::B的源码文件,比如你的类定义在lib/a.rb,测试文件开头需要添加:
require_relative '../lib/a' # 根据实际文件路径调整 describe A::B, type: :class do # 编写你的测试逻辑 end
内容的提问来源于stack exchange,提问作者Abdul Sami
相关产品推荐
相关产品推荐

