Ho una classe con Microsoft.AspNet.Identity.UserManager iniettato, e mi aspetto il metodo userManager.CreateAsync (utente, password) per restituire un'attività in cui IdentityResult.Succeeded = vero Tuttavia, gli unici costruttori disponibili per IdentityResult sono i costruttori di errori che causeranno la proprietà Succeeded come false.Come costruire IdentityResult con successo == true
Come si crea un IdentityResult che è riuscito == true? IdentityResult non implementa un'interfaccia e Succeeded non è virtuale, quindi non vedo alcun modo ovvio di creare un oggetto mock attraverso Rhino Mocks (che sto usando come framework di simulazione).
Il mio metodo è simile al seguente. Fornire questo esempio per mostrare perché potrei voler deridere questo.
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;
}
che sto cercando di scrivere uno unit test che assicura che someOtherDependency.DoSomethingAmazing() viene chiamato se identityResult.Succeeded è vero. Grazie per qualsiasi aiuto!
Sembra un caso per un decoratore (http://en.wikipedia.org/wiki/Decorator_pattern). –
Sì, stavo davvero cercando di riservarlo come ultima risorsa. Esistono numerosi metodi che restituiscono IdentityResult, quindi sarebbe un problema avvolgere tutti questi ... ma potrei doverlo fare. – jakejgordon
Come @jaytre menzionato, usa var result = IdentityResult.Success ti darà un oggetto IdentityResult con Riuscito = true –