Ich versuche, diese Controller-Methode zu testen, die in aktuellen MVC-Projekten standardmäßig zur Verfügung steht.Interfaces zum Mocking von ConfirmEmailAsync und anderen UserManager-Methoden in MVC5
[AllowAnonymous]
public async Task<ActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return View("Error");
}
var result = await UserManager.ConfirmEmailAsync(userId, code);
return View(result.Succeeded ? "ConfirmEmail" : "Error");
}
Die Accountcontroller hat einen Konstruktor, der eine ApplicationUserManager und einen ApplicationSignInManager als Parameter nehmen, und die passenden Eigenschaften mit eigenem Etter zum Testen zu verwenden. Ich kann jedoch nicht herausfinden, wie die ConfirmEmailAsync-Methode ausgeheckt werden soll.
können Sie verschiedene Schnittstellen im Identity-Namespace verspotten:
var store = new Mock<IUserStore<ApplicationUser>>();
store.As<IUserEmailStore<ApplicationUser>>()
.Setup(x => x.FindByIdAsync("username1"))
.ReturnsAsync((ApplicationUser)null);
var mockManager = new ApplicationUserManager(store.Object);
AccountController ac = new AccountController(mockManager, null, GetMockRepository().Object, GetMockLogger().Object);
Aber ich kann nicht finden oder herauszufinden, welche Schnittstelle ich brauche, um ein Modell von ConfirmEmailAsync zu erstellen.
Wie gehe ich vor? Und als Referenz: Gibt es eine gute Möglichkeit, herauszufinden, an welchen Schnittstellen sich diese Methoden befinden, um sie zu simulieren und zu testen?
ich bin um dies durch Abstrahieren der meisten der Funktionalität der Identität in ein eigenes Projekt, so dass ich Unit-Test einfacher und die Abstraktion in anderen Projekten wiederverwenden kann. Ich begann mit diesem Artikel http://timschreiber.com/2015/01/14/persistence-ignorant-asp-net-identity-with-patterns-part-1/ und dann abgestimmt es für meine Bedürfnisse – Nkosi