RSpec中"to"方法的问题(未定义方法)

Ste*_*ane 11 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
Run Code Online (Sandbox Code Playgroud)

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

NoMethodError: undefined method `to' for 1:Fixnum
Run Code Online (Sandbox Code Playgroud)

然而,第一个期望线工作正常.而gene.id绝对是一个FixNum.

Ruby 2.1.2,rspec 3.0.0,Mac OS 10.9.4上的RubyMine.

有什么想法吗?

Ale*_*x P 32

最后两expect行中的间距正在绊倒Ruby解释器.

expect (5).to equal(1)
Run Code Online (Sandbox Code Playgroud)

被Ruby评估为:

expect(5.to(equal(1)))
Run Code Online (Sandbox Code Playgroud)

当你真正的意思是:

expect(5).to(equal(1))
Run Code Online (Sandbox Code Playgroud)

它是调用expect()具有方法的返回值to; RSpec没有扩展Ruby内置类型.所以你应该将你的最后两个期望改为:

expect(ct).to equal(1)
expect(5).to eq(5)
Run Code Online (Sandbox Code Playgroud)