2012-10-09 8 views
6

Mam kod biblioteki, który może być wywoływany z wielu typów klienta, takich jak WinForm, konsola, ASP.NET itp. ... i który musi określić bieżącą wartość główną. W ten sposób mam przeprowadza kontrolę dwóch stopniową Thread.CurrentPrincipal a następnie Environment.UserName następująco:Jak zresetować Thread.CurrentPrincipal do nieuwierzytelnionego w jednostce testowej

var currentUser = !System.Threading.Thread.CurrentPrincipal.Identity.IsAuthenticated ? null : System.Threading.Thread.CurrentPrincipal.Identity.Name; 
if (string.IsNullOrWhiteSpace(currentUser)) 
{ 
    currentUser = Environment.UserName; 
} 

w konsoli app Thread.CurrentPrincipal.Identity.IsAuthenticated jest zawsze fałszywe howerver w MSTest zawsze ma ona prawidłowy uwierzytelniony użytkownik.

Czy mimo to zresetowano wartość Thread.CurrentPrincipal w teście urządzenia na nieuwierzytelnione, aby naśladować aplikację Console?

Odpowiedz

11

Wszystko, co musisz zrobić, to:

Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(""), new string[0]); 
0

wolałbym utworzyć klasę, która implementuje wszystkie zarządzanie CurrentPrincipal z właściwym interfejsem i dostać że interfejs wstrzykuje gdzie jest to potrzebne.

Następnie można z nich kpić w testach jednostkowych, co czyni je prostszymi.

Powiązane problemy