2012-07-23 6 views
0

IronRuby에서 rspec gem을 설치하면 자동화 된 be_ * 메소드 도우미가 부족한 것 같습니다. 예를 들어 다음 코드는 정의되지 않은 메서드 오류를 생성합니다.rspec with IronRuby missing be_ * methods

require 'rubygems' 
require 'rspec' 

x = 7 
x.should == 7 # works 
x.nonzero?.should == 7 #works 
x.should be_nonzero # undefined method `be_nonzero' for main:Object 

rspec gem을 설치하는 데 igem을 사용했습니다. 내 설치된 보석의 목록은 다음과 같습니다.

bewildr (0.1.14) 
builder (3.0.0) 
cucumber (0.6.3) 
diff-lcs (1.1.3) 
iron-term-ansicolor (0.0.3) 
json_pure (1.7.3) 
polyglot (0.3.3) 
rspec (2.11.0) 
rspec-core (2.11.1) 
rspec-expectations (2.11.1) 
rspec-mocks (2.11.1) 
term-ansicolor (1.0.7) 
treetop (1.4.10) 

내가 여기에없는 것이 있습니까?

답변

2

RSpec matcher는 일반적으로 글로벌 네임 스페이스를 피하기 위해 it 블록에서만 사용할 수 있습니다. 다른 Ruby 구현에서 코드를 실행 해 보았습니까? 같은 오류가 발생합니다.

+0

음을. 당신 말이 맞습니다 - 코드를 설명하는 ... if 블록에 넣으면이 문제가 해결됩니다. 그러나 이것이 그렇다면, 내가 어떻게이 차단기를 블록 밖에서 원할 때 소개 할 수 있습니까? 오이 내부처럼/^ etc $/차단합니까? 또는이 기능이 rspec에서 온다고 생각하는 것이 잘못 되었습니까? –

0

동일한 문제가 있었지만 게시물을 통해 몇 가지 조사를하게되었습니다. 여기 해결책을 발견했습니다 : 한마디로 https://github.com/cucumber/cucumber/wiki/RSpec-Expectations 을 나는이를 추가 한 내 "\ 지원 \의 env.rb 기능"에 :

require 'rspec/expectations' 
World(RSpec::Matchers)