所以,我的 ruby 代码中有一个模块,看起来像这样:
module MathStuff
class Integer
def least_factor
# implementation code
end
end
end
我有一些 RSpec 测试,我想在其中测试我的 Integer#least_factor
方法是否按预期工作。为了简单起见,我们会说测试在同一个文件中。测试看起来像这样:
describe MathStuff do
describe '#least_factor' do
it 'returns the least prime factor' do
expect(50.least_factor).to eq 2
end
end
end
不幸的是,当我运行测试时,出现如下错误:
NoMethodError:
undefined method `least_factor' for 50:Fixnum
如果您知道如何包含 MathStuff::Integer
类进行测试,请告诉我。
注意:为了澄清,我实际上是想在这里打开 Ruby Integer 类并向其添加方法。
最佳答案
您的代码应如下所示:
describe MathStuff::Integer do
describe '#least_factor' do
it 'returns the least prime factor' do
expect(MathStuff::Integer.new.least_factor).to eq 2
end
end
end
但是你正在调用 50.least_factor
并且 50 是一个 Fixnum
对象,而不是你的 MathStuff::Integer
而且它不是定义了那个方法。
关于ruby-on-rails - 使用 RSpec 测试模块内部的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205352/