Witam mam zrobić test jednostki na moim projekcie ASP.Net MVC2. Używam frameworka Moq. W moim LogOnController,FormsAuthentication.SetAuthCookie szyderczy za pomocą Moq
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl = "")
{
FormsAuthenticationService FormsService = new FormsAuthenticationService();
FormsService.SignIn(model.UserName, model.RememberMe);
}
w klasie FormAuthenticationService,
public class FormsAuthenticationService : IFormsAuthenticationService
{
public virtual void SignIn(string userName, bool createPersistentCookie)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
}
public void SignOut()
{
FormsAuthentication.SignOut();
}
}
Moim problemem jest to, jak można uniknąć wykonywania
FormsService.SignIn(model.UserName, model.RememberMe);
tej linii. Czy jest jakiś sposób, aby Min
FormsService.SignIn(model.UserName, model.RememberMe);
użyciu Moq ramy bez zmianę mojego projektu ASP.Net MVC2.
Co to jest SUT (System Under Test) - "LogOnController" lub "FormsAuthenticationService"? Jeśli jest to pierwsze, należy podać fałszywe dla 'FormsAuthenticationService' i powinieneś sprawdzić, czy jest wywołana metoda' SignIn'. Ten drugi jest trudniejszy do testowania jednostkowego, ponieważ wymaga aktualnego 'HttpContext', do którego należy dodać plik cookie (do' HttpResponse'). –
Chcę przetestować LogOnController. Próbowałem udawać FormsService.SignIn (model.UserName, model.RememberMe); w ten sposób, var formService = new Mock(); Ale formservice.SignIn niczego nie zwraca. Jak mogę uniknąć wykonywania tej linii lub jak kpić z tej linii. Nie mam pojęcia, jak to udowodnić za pomocą Moq. –
Dilma