2013-03-01 7 views
0

에서 메소드에 도달하지 못합니다. ruby ​​/ rspec을 처음 접하고 메소드가 예외를 발생시키는 지 테스트하려고합니다. 나는 이것에 대해 완전히 잘못 될 수 있습니다.RSpec은 클래스

#require 'rspec' 

describe "TestClass" do 
    it "should raise exception when my method is called" do 
    test = Test.new 
    test.should_receive(:my_method).and_raise 
    end 
end 

class Test 
    def my_method 
    raise 
    end 
end 


rspec test.rb 
F 

Failures: 

    1) TestClass should raise exception when my method is called 
    Failure/Error: test.should_receive(:my_method).and_raise 
     (#<Test:0x007fc61c82f7c8>).my_method(any args) 
      expected: 1 time 
      received: 0 times 
    # ./test.rb:6:in `block (2 levels) in <top (required)>' 

Finished in 0.00061 seconds 
1 example, 1 failure 

Failed examples: 

rspec ./test.rb:4 # TestClass should raise exception when my method is called 

왜 메시지가 0 번 수신 되었습니까?

답변

1

테스트가 잘못되었습니다.

it "should raise exception when my method is called" do 
    test = Test.new 
    test.should_receive(:my_method) 

    expect { 
    test.my_method 
    }.to raise_error  
end 

을 그리고이 경우 당신은 가능성이 should_receive를 추가 할 필요가 없습니다 위해서는 예외가이 작업을 수행 할 수 있습니다 발생하는지 테스트합니다. my_method으로 전화하면 test이 해당 방법을 수신하고 있음을 확인할 수 있습니다. 기본적으로 조롱 할 필요가 없을 때 조롱하고 있습니다.

+0

감사! 나는 다른 곳에 참조 된 것을 보았다. should_receive를 완전히 오용했다. – sclarson

+0

@sparks yup! : D 나는 rspec으로 오랜 시간 동안 어려움을 겪었고, 존재하는 모든 다양한 도우미에 치트 시트를 사용하고자합니다. https://gist.github.com/steveclarke/2353100 –

0

이 메소드를 호출하려면 무엇인가해야합니다. 콜백 인 경우 here이 예제를 테스트하는 방법입니다.

+0

그 링크는 아마도 ruby ​​/ rspec으로 시작한 누군가에게 혼란을 일으킬 수 있습니다. –

관련 문제