2012-05-05 3 views
17

MiniTest 2.12.1 (Ruby> = 1.9와 함께 제공되는 재고 테스트 프레임 워크의 최신 버전)을 사용하고 있는데 클래스 메소드을 모의하는 방법을 알아낼 수 없습니다. 예를 들어 Mocha는 :Ruby : MiniTest로 클래스 메소드 조롱?

product = Product.new 
Product.expects(:find).with(1).returns(product) 
assert_equal product, Product.find(1) 

나는 일 동안 인터넷을 취미 삼아 봤는데 나는이에 대한 합리적인 해답을 찾기 위해 여전히입니다. 도와주세요?

+0

는'minitest/mock', [? 중복]와 _mocking_의이 종류를 만들 수 없습니다 (http://stackoverflow.com/questions/7211086/how-do-i-stub-things-in-minitest) – fguillen

답변

17

2.12.1을 사용하여 붙어 있지만 머리에 here의 minitest/mock 메소드 스텁을 추가 한 것처럼 보이는 경우 유용하지 않을 수 있습니다.

그래서, 당신은 minitest HEAD로 업데이트했다, 나는 당신이 할 수 있다고 생각 : 내가 생각

product = Product.new 
Product.stub(:find, product) do 
    assert_equal product, Product.find(1) 
end 
+0

어떻게 머리를 가장 작은 것으로 업데이트합니까? (고마워!) – mpelzsherman

+0

내가 이걸 쓴 이후로 새 버전에 태그를 추가 한 것처럼 보이므로 HEAD로 업데이트 할 필요가 없습니다. 최신 버전은 3.5.0입니다. bundler를 사용한다면, gemfile에'gem 'minitest, 3.5.0''과 같은 라인이 있는지 확인하여 minitest를 업데이트 할 수 있습니다. HEAD 버전을 사용하고 싶다면'gem 'minitest', : git => 'git : // github.com/seattlerb/minitest.git'대신 Gemfile에 이것을 넣으십시오. Bundler를 사용하지 않는다면,'gem update minitest'가 그렇게해야한다고 생각합니다. – Adam

+0

명확히하기 위해 : 이것은 mocha 솔루션과 정확하게 일치하지 않습니다 :'.find' 호출의 매개 변수가이 솔루션으로 검증되지 않았습니다 ... – severin