Mam klasy z Microsoft.AspNet.Identity.UserManager wstrzyknięty, i chcę oczekiwać metody userManager.CreateAsync (użytkownik, hasło), aby zwrócić zadanie, w którym IdentityResult.Succeeded = true. Jednak jedynymi dostępnymi konstruktorami dla IdentityResult są konstruktory błędów, które spowodują, że właściwość Succeeded będzie fałszywa.Jak zbudować IdentityResult z sukcesem == true
Jak utworzyć IdentityResult, który powiodło się == true? IdentityResult nie implementuje interfejsu, a funkcja Succeeded nie jest wirtualna, więc nie widzę żadnych oczywistych sposobów tworzenia pozorowanego obiektu za pomocą Rhino Mocks (którego używam jako mojej szyderczej architektury).
Moja metoda robi coś jak poniżej. Podając ten przykład, aby pokazać, dlaczego mógłbym drwić z tego.
public async Task<IdentityResult> RegisterUser(NewUser newUser)
{
ApplicationUser newApplicationUser = new ApplicationUser()
{
UserName = newUser.UserName,
Email = newUser.Email
};
IdentityResult identityResult = await applicationUserManager.CreateAsync(newApplicationUser, newUser.Password);
if(identityResult.Succeeded)
{
someOtherDependency.DoSomethingAmazing();
}
return identityResult;
}
Próbuję napisać badanej jednostki, która zapewnia, że someOtherDependency.DoSomethingAmazing() jest wywoływana jeśli identityResult.Succeeded jest prawdą. Dzięki za pomoc!
Brzmi jak sprawa dekoratora (http://en.wikipedia.org/wiki/Decorator_pattern). –
Tak, naprawdę chciałem to zarezerwować w ostateczności. Istnieje wiele metod, które zwracają IdentityResult, więc trudno byłoby zawijać wszystkie te ... ale może po prostu muszę. – jakejgordon
Jak wspomniano @jaytre, użyj var result = IdentityResult.Success da ci obiekt IdentityResult z Succeeded = true –