2014-12-06 3 views
1

나는 Date의 모든 속성/메소드 외에도 Javascript, BardyDate의 Date() 구현을 작성했습니다. 왜 내가이 일을했는지는 매우 좋은 질문이지만, 비오는 날을 위해 그것을 구할만한 긴 이야기입니다.Javascript date test harness

하지만 내가 생각했던 것은 사랑 스럽겠지만 그것이 여전히 Date로 올바르게 작동하는지 확인할 수있는 것입니다. 테스트 스위트 등에 대해서는 아무것도 모르지만, Javascript Date 오브젝트의 기존 테스트를 BardyDate에 적용하여 정확성을 보여줄지 궁금해 한 적이 있습니까?

매우 환영합니다.

+1

에 해당하는 d[toString]() 아래로 컴파일 d[dateFunction]() 최신의 방법을 반복하고, 호출 자바 스크립트 객체 내에서 키 각 함수 문자열을 처리 할 수 ​​있습니다 같은 방법으로 날짜를 표시하고 동일한 출력을 산출합니다. 2 개의 객체가 절대로 같지 않으므로 문자열 버전의 날짜를 비교해야합니다. – dandavis

답변

0

자바 스크립트에 이미 데이트 테스트 스위트가 없다는 것이 확실하지 않기 때문에 응답을 기다렸습니다. 나는 더 많은 것을 알 수있는 누구에게나 의심의 이익을주고 싶었습니다.

그러나이 종류의 테스트는 브라우저 구축/유효성 검사에서 모두 수행됩니다. 그 개발 영역에서 기존의 테스트 스위트 중 일부를 사용하는 것은 가능하지만 설치가 쉬운 일은 아니라고 생각합니다. 브라우저의 대부분은 build process that you could fork입니다 (특히 날짜 테스트 사례를 분리 할 수 ​​있음). 테스트 프로세스 내에서 W3 스펙 호환성을 보장하기 위해 테스트 할 Javascript Date 오브젝트에 대해 지정된 세그먼트를 찾아야합니다.

여기에서 Selenium은 단위 테스트를 생성하고 웹 앱 (자바 스크립트에 연결)에 대한 통합 테스트를 설계하고 테스트 결과에 대한 좋은 보고서를 작성할 수있는 매우 일반적인 방법입니다.

마지막으로, 자바 스크립트 테스트 라이브러리에 cummulative 게시물 this post about Javascript TDD (Test Driven Design)

에서 찾을 수 있습니다 또는 당신이 뭔가를 할 수있는 다음 (가이드 라인이 아닌 완벽한 솔루션이 될 것을 의미 - dandavis에서 주석 영감) :

var epochTS = 0; 
var bd = new BardyDate(epochTS); 
var d = new Date(epochTS); 

Object.getOwnPropertyNames(Date.prototype).forEach(function(dateFunction){ 
    //in this if statement you are testing the functions like getTime() and getYear() 
    if(dateFunction.indexOf("get") == 0){ 
     console.log("dateFunction " + dateFunction + 
      "() pass: " + (bd[dateFunction]() === d[dateFunction]())) 
    } 
    //in this if statement you are testing the functions like toString() and toJSON() 
    if(dateFunction.indexOf("to") == 0){ 
     console.log("dateFunction " + dateFunction + 
      "() pass: " + (bd[dateFunction]() === d[dateFunction]())) 
    } 
    //then there are the 16 set methods, those you probably would want to hardcode. 
    //unless you are content with passing a hard coded value in like "10" -- the 
    //issue would be bounds testing, which you would likely want to hardcode. 
    //beyond the scope of this for-each loop. 
}) 

당신이 012의 모든 방법을 얻을 수 있습니다 Object.getOwnPropertNames(Date.prototype)

위의 조각에 작은 설명이라는 사실에도 불구하고 DateDontEnum (see this post for more info)이라는 특성을 가지고 있습니다.

은 또한 당신은 따라서 dateFunction === "toString" 해석 될 경우/d.toString()

관련 문제