2011-01-04 3 views
3

우리가 개발/품질 보증을 할 때 종종 현재 날짜/시간이 지금이 아닌 다른 척해야합니다. 날짜에 의존하는 일종의 논리를 사용하는 것이 일반적입니다.Override DateTime.Now

간단한 예 : 2010 년 12 월 15 일에서 1 월 3 일 사이에 상점의 제품을 사용할 수 있다고 가정합니다.이 두 날짜는 DB에 저장되며 코드는 DateTime.Now과 비교합니다. 이것은 명백하게 어떻게 든 테스트되어야합니다. 질문은 어떻게?

지금까지 우리는 단지 사용자 정의 Date 객체를 추가하고 현재 날짜에 의존 할 수 있으며 슈퍼 절름발이 느낀다 제 3 자 코드를 포함하지 않는 대신 DateTime.NowDate.Now를 사용하여 시행하려고했습니다.

Windows에서 시스템 날짜를 변경하지 않고도 날짜 대체를 처리하는 좀 더 정교한 방법이 있는지 궁금합니다. 내가 Microsoft Moles에서 당신이 DateTime.Now에 대한 호출을 대체 할 것 절연 프레임 워크를 살펴보고 당신을 추천 할 것입니다 순수 .NET에서 방법은 없습니다

답변

12

를 호출 할 필요가 당신의 원하는 데이트를 반환 할 수있는 자신의 대표자.

+0

나는 이것을 더 좋아한다. 설치 노력은 무엇입니까? VS 프로젝트없이 이것을 사용할 수 있습니까? –

+0

설치가 간단하며 문서를 사용할 수 있습니다. VS 프로젝트없이 실행하면 정확히 무엇을 의미합니까? Moles를 사용하는 단위 테스트를 컴파일해야하며 단위 테스트가 작동하려면 Moles 프로파일 러에서 실행해야합니다. –

+0

알았어. MbUnit 또는 NUnit에서 Moles를 사용할 수 있습니까? –

-1

, 당신은 단위 테스트를 위해 Win32SetSystemTime function using pinvoke

+0

개발은 웹 컨텍스트에서 수행되므로 불행히도 이것은 옵션이 아닙니다. 따라서 동일한 서버가 수십 개의 응용 프로그램을 실행하고 그 중 특정 하나만 영향을받을 필요가 있습니다. –

+0

시스템 시간을 변경하면 특히 다른 프로그램/응용 프로그램과 함께 부정적인 영향을 미칠 수 있습니다. – Bobby