Я пытаюсь узнать об модульном тестировании с помощью нового проекта VS2013 MVC w/Authentication Project. Одной из первых вещей, которые я хочу проверить, является регистрация пользователя. (Я знаю, что мне, вероятно, не нужно тестировать это, поскольку это уже проверенный MS код, но я хочу использовать это, чтобы понять основы). Я также слышал, что новый код членства более «проверен», поэтому мне не нужно создавать собственные интерфейсы членства и т. Д.Тестирование модуля MVC Authentication VS 2013
Я использую NSubstitute как фальшивую структуру.
Глядя на контроллер Account -> Register() метод асинхронной
namespace WebApplication1.Controllers
{
[Authorize]
public class AccountController : Controller
{
public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
{
}
public AccountController(UserManager<ApplicationUser> userManager)
{
UserManager = userManager;
}
public UserManager<ApplicationUser> UserManager { get; private set; }
...
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Если бы я хотел написать простой тест (напр Register_RegisterValidUser.), Как бы я это сделать? Я знаю, что нужно заменить на UserManager каким-то образом, но это не работает для меня:
var substitute = Substitute.For<UserManager<ApplicationUser>>();
Я также понимаю, что мне нужно обойти Task асинхронной <> функции с помощью Task.FromResult, но я не знаю, как для возврата действительных объектов из методов CreateAsync() и SigninAsync().
Может ли кто-нибудь помочь с примером тестового кода? Большое спасибо!
Пила это и пробовала, и она работает ! Спасибо –