2013-06-20 3 views
1

내가 일을하는 문제가이 간단한 모카 테스트를 얻는 데루비에서 모카를 사용하여 공장 패턴을 테스트하는 방법은 무엇입니까?

Diclaimer 나는 모카에 새로운 해요!

Factory 클래스

# lib/fabtory.rb 
class Factory 
    def self.build klass, *args 
    klass.new *args 
    end 
end 

내 테스트 코드

# test/test_factory.rb 
class FactoryTest < MiniTest::Unit::TestCase 

    # my fake class 
    class Fake 
    def initialize *args 
    end 
    end 

    def test_build_passes_arguments_to_constructor 
    obj = Factory.build Fake, 1, 2, 3 
    obj.expects(:initialize).with(1, 2, 3).once 
    end 

end 

출력

unsatisfied expectations: 
- expected exactly once, not yet invoked: #<Fake:0x7f98d5534740>.initialize(1, 2, 3) 

답변

2

는 방법에 대한 expects 방법보기는 그의 호출 후 호출합니다.

당신은 조금 다른 설정 것에 있습니다

def test_build_passes_arguments_to_constructor 
    fake = mock() 
    Fake.expects(:new).with(1, 2, 3).returns(fake) 
    assert_equal fake, Factory.build(Fake, 1, 2, 3) 
end 
+0

나는이 변화를 만들어 우리가 조금 더 얻었다. 하지만 여전히 오류가 발생합니다. < – naomik

+0

@naomik하지만 오류가 변경되었습니다. –

+0

맞습니다. 왜 '초기화'가 호출되었는지 모카가 감지하지 못합니까? – naomik

관련 문제