2010-05-28 4 views
6

작은 Javascript 응용 프로그램에서 모듈에 대한 단위 테스트를 작성하고 있습니다. 인터페이스를 깨끗하게 유지하기 위해 구현 세부 사항 중 일부는 익명의 함수 (개인 정보 보호를위한 일반적인 JS 패턴)에 의해 처리됩니다. 그러나, 테스트하는 동안 나는 개인적인 부분에 액세스/모의/확인해야합니다.Javascript의 화이트 박스 테스트 - 개인 정보 취급 방안은 무엇입니까?

이전에 작성한 대부분의 테스트는 실제 개인 변수 (멤버, 식별자, 호출하려는 대상)가없는 Python으로 작성되었습니다. 하나는 사용자를위한 주요 밑줄을 통해 프라이버시를 제안하고 코드를 테스트하는 동안 자유롭게 무시합니다. 정적으로 타입이 지정된 OO 언어에서 나는 private 멤버를 protected로 변환하고 테스트 할 객체를 하위 클래스 화하여 테스트에 액세스 할 수 있도록 private 멤버를 만들 수 있다고 가정합니다. Javascript에서는 후자가 적용되지 않지만 전자는 나쁜 실행처럼 보입니다.

언제든지 블랙 박스 테스트로 돌아가서 최종 결과를 간단히 확인할 수 있습니다. 그것은 가장 간단하고 깨끗한 접근 방법이지만 불행히도 내 필요에 충분히 상세하지는 않습니다.

그래서 자바 스크립트 테스트를 위해 일부 백도어를 유지하면서 변수를 비공개로 유지하는 표준 방법이 있습니까?

+8

흠, 사람들이 내 사적인 부분을 조롱 할 때 싫어 해요. – Martin

답변

1

아니요. 나는 존재하지 않는다고 생각합니다. 기본적으로 폐쇄 방법을 사용하여 화이트 박스 테스트를 포기하거나 화이트 박스 테스트를 수행하고 "개인"멤버의 이름 장식을 사용할지 여부에 달려 있습니다. 사실 파이썬 에서뿐만 아니라 자바 스크립트에서 너무 많은 프로젝트가 비공개를 꾸미기 위해 그다지 마법 같은 밑줄을 사용하지 않습니다. 그래서 이것은 이미 문제에 대해 널리 받아 들여지고있는 해결책입니다.

정말로 원하지 않고 화이트 박스 단위 테스트가 필요하다면 테스트를 항상 개체에 통합 할 수 있습니다. 프로덕션 코드 (최소화, 요구/제공 해결 등)에 대해 별도의 빌드 단계가있는 경우이 프로세스에서 테스트 기능을 제거 할 수 있습니다.

+0

어쨌든 나는 약간의 장식을해야 할 것 같습니다. 감사. 테스트를 메인 코드에 통합하고 빌드하는 동안 제거하는 것은 흥미로운 해결책이지만 약간 지저분합니다. –

관련 문제