development

특정 SPTimeZone 인스턴스 생성 또는 가져 오기

big-blog 2020. 10. 22. 08:19
반응형

특정 SPTimeZone 인스턴스 생성 또는 가져 오기


Microsoft.SharePoint.SPTimeZone다음과 같이의 특정 인스턴스를 만드는 가장 편리한 방법은 무엇입니까?

SPTimeZone utc = SPRegionalSettings.GlobalTimeZones
                                   .OfType<SPTimeZone>()
                                   .FirstOrDefault(tz => tz.Information.Bias == 0
                                                   && tz.Information.DaylightBias == 0);

이 해킹이 내가 얻을 수있는 최고의 해킹인가요?

단위 테스트를 위해 코드의이 부분을 조롱하고 항상 UTC를 반환하도록 강제하고 싶기 때문에 이것은 특히 문제입니다. 이 속성 GlobalTimeZonesHttpContext.Current실제 요청 에 따라 달라지는 것 같습니다 . 내 단위 테스트에없는 전제 조건 ...

NB : System.TimeZoneInfo제 3 자 어셈블리가 SPTimeZone을 사용하도록 강요 한다는 것을 알고 있습니다 .


토론을 중단하기 위해 마침내이 질문에 스스로 답하기로 결정했습니다.

이 짧은 답변에서 수집하고 싶은 의견에는 몇 가지 유용한 솔루션이 있습니다.

  • 파사드 / 어댑터 소개
  • MS Fakes 또는 기타 프레임 워크를
    • SPTimeZone에 대한 가짜 액세스
    • 가짜 HttpContext 만들기
  • 위의 질문에서 설명한 해킹으로 이동하십시오 ...

필자는 MSFakes를 사용하여 전체 타사 호출을 shim (어쨌든 그 동작을 테스트하고 싶지 않았기 때문에)하고 메서드에서 사용하는 SPTimeZone의 모든 속성을 shim하기로 결정했습니다. 안타깝게도 어댑터를 도입하는 것은 (내부) API를 보존해야했기 때문에 나에게 선택 사항이 아니 었습니다.

참고 URL : https://stackoverflow.com/questions/30391153/create-or-get-specific-sptimezone-instance

반응형