2008-09-22 11 views
3

"Test Driven Development : By Example"에서 Kent Beck의 xUnit Python 예제를 다시 써서 루비를 닦으려고합니다. 나는 아주 멀리있어하지만 지금은 내가 grok하지 실행하면 다음과 같은 오류가 발생합니다.Ruby 코드에서 "잘못된 숫자의 인수 (0을 2)"가 나타나는 이유는 무엇입니까?

C:\Documents and Settings\aharmel\My Documents\My Workspace\TDD_Book\TDDBook_xUnit_RubyVersion\lib\main.rb:21:in `test_running': wrong number of arguments (0 for 2) (ArgumentError) 
    from C:\Documents and Settings\aharmel\My Documents\My Workspace\TDD_Book\TDDBook_xUnit_RubyVersion\lib\main.rb:21:in `run' 
    from C:\Documents and Settings\aharmel\My Documents\My Workspace\TDD_Book\TDDBook_xUnit_RubyVersion\lib\main.rb:85 

내 코드는 다음과 같습니다

class TestCase 
    def initialize(name) 
    puts "1. inside TestCase.initialise: @name: #{name}" 
    @name = name 
    end 
    def set_up 
    # No implementation (but present to be overridden in WasRun) 
    end 
    def run 
    self.set_up 
    self.send @name # <<<<<<<<<<<<<<<<<<<<<<<<<= ERROR HERE!!!!!! 
    end 
end 

class WasRun < TestCase 
    attr_accessor :wasRun 
    attr_accessor :wasSetUp 

    def initialize(name) 
    super(name) 
    end 
    def set_up 
    @wasRun = false 
    @wasSetUp = true 
    end 
    def test_method 
    @wasRun = true 
    end 
end 

class TestCaseTest < TestCase 
    def set_up 
    @test = WasRun.new("test_method") 
    end 
    def test_running 
    @test.run 
    puts "test was run? (true expected): #{test.wasRun}" 
    end 
    def test_set_up 
    @test.run 
    puts "test was set up? (true expected): #{test.wasSetUp}" 
    end 
end 

TestCaseTest.new("test_running").run 

는 사람이 내 명백한 실수를 지적 할 수 있습니까?

답변

11

이 인쇄 문입니다.

+0

네, 그렇게해야합니다. 나는 그것을 시도하고 예상대로 작동합니다. –

+0

건배. 나는 단지 나 자신을 얻었다 (나는 2 일 동안 오프라인 상태였다). –

0

도약의 한 가지 방법은 send 메서드가 메서드 이름을 나타내는 기호를 필요로하지만 인스턴스 변수를 사용하려고한다는 것입니다. 이 같은

또한

Object.send documentation

,해야하지 라인 :

puts "test was run? (true expected): #{test.wasRun}" 

될 :

puts "test was run? (true expected): #{@test.wasRun}" 

?

puts "test was run? (true expected): #{test.wasRun}" 

2 개 변수를 기대하는 '@'당신이 전화하는 커널 # 시험없이

puts "test was run? (true expected): #{@test.wasRun}" 

을해야한다 :

+0

보내기는 문자열과 기호를 모두 허용하며, 인스턴스 변수는 원하는 문자열을 포함합니다. 괜찮습니다 :-) –