2011-05-11 2 views
4

저는 단위 테스트에서 몰을 사용하기 시작했으며 문서로 조금 힘들어하고 있습니다.데이트 시간에 두더지 사용하기

달구어 싶습니다. DateTime.Now.

이전 방법을 살펴보면 mscorlib에 대한 참조를 추가 한 다음 스텁 파일 (Add New Item -> Stubs And Moles for Testing)을 추가하는 것이 었습니다.

'테스트 용 스텁 및 두더지'템플릿은 더 이상 사용되지 않으며 대신 참조를 마우스 오른쪽 버튼으로 클릭하고 '두더지 어셈블리 추가'를 선택하면됩니다.

VS2010에서는 "System"에 대한 참조가 있으므로 mscorlib에 직접 참조를 추가 할 수 없습니다.이 네임 스페이스의 일부로 개체 브라우저에서 DateTime을 볼 수 있으므로이 작업은 정상입니다.

시스템 참조에 두더지 조립품을 추가하고 다시 작성하더라도 MDateTime을 해결할 수 없습니다.

제안 사항?

답변

15

mscorlib의 경우, 테스트 프로젝트의 참조를 직접 마우스 오른쪽 버튼으로 클릭해야합니다. mscorlib에 대해 몰 조립품을 추가해야합니다. 그런 다음 Moul of System.DateTime (실제로는 조금 더 필요함)을 원하기 때문에 using System.Moles;을 테스트 클래스에 추가하십시오. 이 검사를 실행할 경우 추가해야하기 때문에

[TestMethod()] 
[HostType("Moles")] 
public void DateTimeMolesTest() 
{ 
    DateTime date = new System.DateTime(2000, 1, 1, 2, 3, 4, 5); 
    MDateTime.NowGet =() => date; 
    Assert.AreEqual(date, DateTime.Now); 
} 

, 그것은 실패합니다

using Microsoft.Moles.Framework; 
[assembly: MoledType(typeof(System.DateTime))] 

그런 다음 테스트가 성공합니다. 일부 특수 유형의 mscorlib에서는 Moles를 사용할 수 없습니다.

+0

완벽한, 감사합니다! – Mark

+0

"mscorlib 용 Moles Assembly 추가"를 시도했지만 빌드 할 때 수천 개의 오류가 발생했습니다. 어셈블리 참조 부족으로 인해 대부분 형식/네임 스페이스 해결 오류가 발생합니다. 어떤 생각? – smwikipedia

+0

그건 망할 멋진 대답 +1이야. – Rahul

관련 문제