ASP.NET MVC unit testing mit MOQ Objekt
Was ist der beste Weg, um mock untenstehenden code in unit-Tests:
public ActionResult Products()
{
ViewBag.Title = "Company Product";
IEnumerable<ProductDetailDto> productList = ProductService.GetAllEffectiveProductDetails();
ProductModels.ProductCategoryListModel model = new ProductModels.ProductCategoryListModel
{
//the type of ProductDetails => IEnumerable<productDetailDto>
ProductDetails = ProductService.GetAllEffectiveProductDetails(),
//the type of ProductCategoryList => IEnumerable<selectlistitem>
ProductCategoryList = productList.Select(x => new SelectListItem
{
Value = x.FKProductId.ToString(),
Text = x.Name
})
};
return View(model);
}
Zur info, ich arbeite auf VS 2012, MVC 4.0, Unit-Testing mit MOQ Objekt-und TFS-setup.
Kann mir jemand helfen, auf das, was ist die beste-test-Methode mit mock-Objekt für die oben genannte Methode?
- Ich denke, Sie wollen wahrscheinlich zu erstellen a Moq
System.Web.HttpContextBase
(einrichten Moq Benutzer, Request, Response, Session, Cache, Server etc. erforderlich). - ja ich will MOQ Objekt.
- Brauchen etwas mehr Informationen. Sind Ihre versucht, schreiben einen Unit-test für die oben genannten Methode? Und Sie versuchen, zu verspotten Abhängigkeiten wie artikelservice, ein? Sie erwähnt "Was ist der beste Weg, um mock untenstehenden code in unit-Tests". Was unter code, den Sie genau wollen, zu verspotten hier?
- >>ja, ich bin versucht, zu schreiben unit-test mit moq. >>Und ich möchte wissen, wie kann ich mock Abhängigkeiten wie artikelservice, ein in meinem Beispiel ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, zu verspotten
ProductService
zuerst müssen Sie, um zu injizieren, diese Abhängigkeit.Constructor injection ist die häufigste Methode bei Controllern im ASP.NET MVC.
Dann Sie einfach erstellen Sie ein mock-Instanz
IProductService
werden, übergeben Sie es in den Konstruktor vonYourController
setupGetAllEffectiveProductDetails
Methode und überprüfen Sie zurückgegebenActionResult
und seinemodel
.IProductService
automatisch es ist notwendig, zu implementieren benutzerdefinierter Controller Factory, sonst bekommst du "Keine parameterlosen Konstruktor für dieses Objekt definiert" - Ausnahme. Der link unten enthält ein Beispiel für die Umsetzung.