ruby-on-rails - 使用 RSpec 测试模块内部的类

标签 ruby-on-rails ruby testing rspec rspec-rails

所以,我的 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/

相关文章:

unit-testing - 为什么 TypeError : axios. create 不是函数?测试axios GET时

ruby-on-rails - 在 RSpec 请求规范中使用 Capybara 时,设置自定义请求 header 的最佳方法是什么?

ruby-on-rails - AWS Elasticbeanstalk 应用程序的 Rails : How to get puma 3. 11?

javascript - 如何使用 Ruby 在 Javascript (js.erb) 中设置 url?

ruby - qtbindings ubuntu 安装错误

database - 你如何测试你的数据库设计?

ruby-on-rails - Rails 4 迁移 : has_and_belongs_to_many table name

ruby-on-rails - 延迟工作和行动邮件

ruby-on-rails - 事件记录 : Select max of limit

java - 如何从我的 Java 应用程序内部运行 JUnit 测试?