2014-09-18 3 views
-1

나는 rspec를 배우고 그것으로 안녕하세요 - 세계 프로그램을 작성하려고합니다. 하지만 내 수업을 제대로 요구할 수없는 것 같습니다. 항상 정의되지 않은 메소드 오류를 표시합니다.Rspec는 파일을 요구할 수 없다

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 파일입니다 :

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

그리고 내 map_spec.rb 파일이 내 파일 구조입니다

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

그리고 난에 RSpec에 작업을 수행 할 때 현재 디렉토리에는 항상 다음 오류가 표시됩니다.

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

나는 스크린 캐스트를 따르고 있었고 비디오와 정확히 같은 코드를 썼다. 왜 이런 일이 일어 났는지 나는 모른다. 나는 당신이 expectmap_sam_mario 전화 루비 2.1.0 및 RSpec에 3.0.3

+2

기대 ([1,2,3] .map_sam_mario (| e | e + 1}). ~ eq [2,3,4]' – dddd1919

+0

이 라인에 문제가 있습니까? –

+0

필자가 작성한 코드는 여러분의 것과 다르다. 작성한 원숭이 패치는'expect()'에 의해 호출되지만'Array' 인스턴스에는 호출되지 않는다. – dddd1919

답변

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

을 사용하고 있습니다. 왜냐하면 이것은 RSpec::Expectations::ExpectationTarget 클래스이기 때문에 원인이 없다.

이 줄은 다음과 같이해야합니다 : 그래서 map_sam_mario이 당신의 Array

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

를 호출해야합니다.

이 오류는 require과 아무런 관련이 없습니다.

관련 문제