Rspec不能要求文件

时间:2014-09-18 04:54:48

标签: ruby rspec

我正在尝试学习rspec并用它编写一个hello-world程序。但似乎我不能正确地要求我的班级。它始终显示未定义的方法错误。这是我的文件结构:

├── lib
│   └── map.rb
└── spec
    ├── map_spec.rb
    └── spec_helper.rb

我的map_spec.rb文件:

require 'map'

describe 'Map' do              
  it 'should iterate over array and return new array based on some simple addition' do
    expect([1,2,3]).map_sam_mario {|e| e+1}.to eq [2,3,4]
  end
end

这是我的map.rb文件:

class Array
  def map_sam_mario            
    [2,3,4]
  end
end

当我在当前目录中执行rspec时,它总是显示此错误:

 NoMethodError:
       undefined method `map_sam_mario' for #   <RSpec::Expectations::ExpectationTarget:0x007fad5a9e8270>

我正在关注截屏视频并编写与视频完全相同的代码。我不知道为什么会这样。我使用的是ruby 2.1.0和rspec 3.0.3

1 个答案:

答案 0 :(得分:1)

expect([1,2,3]).map_sam_mario {|e| e+1}.to eq [2,3,4]

您在map_sam_mario上致电expect。原因是没有这种方法,因为这是RSpec::Expectations::ExpectationTarget类。

这一行应该是这样的:

expect([1,2,3].map_sam_mario {|e| e+1}).to eq [2,3,4]

因此map_sam_mario应该调用Array

此错误与require无关。