ruby - RSpec 中的 "to"方法出现问题(未定义的方法)

标签 ruby rspec

这里是 rspec 的全新内容,这将变得很明显。

以下 rspec 文件失败:

require_relative( 'spec_helper')

describe GenotypingScenario do

  it 'should add genes' do
    scen = GenotypingScenario.new
    gene = Gene.new( "Pcsk9", 989 )
    scen.addGene( gene )
    expect( gene.id).to eq( 989 )
    ct = scen.genes.count
    expect (ct).to equal(1)
    expect (5).to eq(5)
  end
end

具体来说,最后两行 expect() 失败,错误如下:

NoMethodError: undefined method `to' for 1:Fixnum

但第一条 expect 行工作正常。而 gene.id 绝对是一个 FixNum。

Mac OS 10.9.4 上的 Ruby 2.1.2、rspec 3.0.0、RubyMine。

有什么想法吗?

最佳答案

最后两行 expect 中的间距使 Ruby 解释器出错。

expect (5).to equal(1)

被 Ruby 评估为:

expect(5.to(equal(1)))

当你真正的意思是:

expect(5).to(equal(1))

它是调用 expect() 的返回值,它有一个方法 to; RSpec 没有扩展 Ruby 内置类型。因此,您应该将最后两个期望更改为如下内容:

expect(ct).to equal(1)
expect(5).to eq(5)

关于ruby - RSpec 中的 "to"方法出现问题(未定义的方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25474005/

相关文章:

mysql - Ruby 创建临时文件来保存 CSV 行并将其分配给数据库

Ruby SOAP SSL 问题

ruby : Finding lowest free ID in an ID array

testing - 我将如何以 BDD 风格在 Rhomobile 中测试 Controller ?

ruby-on-rails - 我应该如何使用 RSpec 测试 Rails 应用程序以获得完整的测试覆盖率?

ruby-on-rails - 测试中的模拟和 stub

refactoring - RSpec:如何在 Controller 中 stub Sorcery 方法调用?

mysql - 将 mysql 推送到 heroku 时出现关系错误

ruby - 通过类属性的部分匹配获取所有元素

ruby-on-rails - 测试委托(delegate)给另一个对象的方法