2013-02-16 2 views
0

내가 같은 배열을 정확 :내가 에 노력하고있어

[#<Date: 2013-01-31 (4912645/2,0,2299161)>, #<Date: 2013-02-28 (4912703/2,0,2299161)>, #<Date: 2013-03-31 (4912763/2,0,2299161)>] 

위대한. 그러나 나는 또한 날짜 객체의 배열이 내가 기대하는 것임을 테스트하고 싶다. 내가 어떻게 그럴 수 있니?

나는이 작업이 가능할 것으로 기대했지만, 해시 태그는 나머지 정보를 주석 처리합니다.

MyClass.new.refined_schedule.should == :[#<Date: 2013-01-31 (4912645/2,0,2299161)>, #<Date: 2013-02-28 (4912703/2,0,2299161)>, #<Date: 2013-03-31 (4912763/2,0,2299161)>] 

편집 : 내 상황에 대해 더 많은 정보를 제공하기 위해, 내 관심사는 실제로이 배열을 스텁하는 방법입니다. 루비가 배열을 올바르게 작성했다고 믿을 필요는 없습니다. 메소드를 올바르게 스텁해야합니다. 명확하지 않은 것에 대해 유감스럽게 생각합니다. 나는 내 코드의 테스트를 작성할 때

describe "#final_schedule" do 
    it "generates an array of pay dates that do not fall on any weekend day" do 
    test_schedule = MyClass.new 
    test_schedule.stub(:refined_schedule) { [#<Date: 2013-01-31 (4912645/2,0,2299161)>, #<Date: 2013-02-28 (4912703/2,0,2299161)>, #<Date: 2013-03-31 (4912763/2,0,2299161)> ] } 
    test_schedule.final_schedule.should == [ "Thursday, Jan 31, 2013", "Thursday, Feb 28, 2013","Sunday, Mar 31, 2013"] 
    end 
end 
+0

왜 그것이 당신이 기대하는 바를 테스트하고 싶습니까? 단위 테스트? 또는 변환을 올바르게 수행하기 위해 Ruby를 신뢰하지 않기 때문입니까? –

+0

일반적으로 테스트하기 어렵다면 테스트가 필요하지 않을 것입니다. –

답변

1
#<Date: 2013-01-31 (4912645/2,0,2299161)> 

이것은 인쇄 가능한 개체의 표현입니다. 루비가 그것을 날짜로 이해하기를 바랄뿐입니다. Date 객체가 생성자로 생성됩니다

Date.new(2013, 1, 31) 

을 그래서 당신은 (때로는 이러한 형식에 대한 예를 들어, 필요하다 : 일/월/년 대 mm/일/년) 결과를 분석하는 것이 옳았다 경우 테스트하려는 경우, 당신은 다음과 같은 것을해야합니다 :

MyClass.new.refined_schedule.should == [Date.new(2013, 1, 31), Date.new(2013, 2, 28),..] 
+0

Killer. 고맙습니다. 나는 그 인쇄 가능한 표현에 어떤 거래가 있었는지 궁금해하고있었습니다. 내가 지금 그걸 처리 할 것 같아. 감사! –

1

, 난 다시 배열을 가지고 있는지보고, 그 배열의 모든 내용은 특정 유형의 것을.

개별 요소가 구문 분석을 통해 문자열에서 DateTime 개체로 올바르게 변환되는지 여부는 컴파일시 언어 테스트 중에 발생하며 DateTime의 단위 테스트의 일부이기 때문에 걱정하지 않습니다.

확실히, 우리는 완전히 편집증이나 항문이 될 수 있으며, 우리의 방법에서 코드의 모든면을 원자 수준까지 테스트하고, 모든 것이 올바르게 작동하는지 확신 할 수 있거나, 언어 개발자가 자신의 역할을 수행하고 있다고 믿을 수 있습니다 , 그리고 그것을 기반으로합니다. 지금까지 나는 그들이 자신들이 실패한 것으로 의심할만한 이유가 없었기 때문에 더 쉬운 길을 택할 수 있습니다.

관련 문제