2010-11-29 9 views
7

Ich bin völlig neu zu Moq und bis jetzt nur die Beispiele in Pro asp.net Framework folgen. In dem Buch wird ein Teil des Crud in den Controller gelegt, etwa um den Kunden per ID zu bekommen - möglicherweise aus Gründen der Kürze. Ich habe mich entschieden, diese Art von Funktionalität in das Repository zu legen und es einfach im Controller wie "customerRepository.GetCustomerByID (id)" aufzurufen. Was ist der beste Weg, um etwas wie das zu testen? Ich habe den folgenden Komponententest erstellt, der aus irgendeinem Grund einen Null-Kunden zurückgibt.Einheit Testing Repository mit Moq

List<Customer> customer = new List<Customer>(); 

customer.Add(new Customer { CustomerId = 1, FirstName = "test", LastName = "wods", Sex = true }); 
mockRepos = new Moq.Mock<ICustomerRepository>(); 
mockRepos.Setup(x => x.Customers).Returns(customer.AsQueryable()); 

CustomersController controller = new CustomersController(mockRepos.Object); 

//Act 
ViewResult results = controller.Edit(1); 

var custRendered = (Customer)results.ViewData.Model; 
Assert.AreEqual(2, custRendered.CustomerId); 
Assert.AreEqual("test", custRendered.FirstName); 

Und der Controller

public ViewResult Edit(int id) 
{ 
    Customer customer = customerRepository.GetCustomerByID(id);   

    return View(customer); //this just returns null?? 
} 

Ich stelle mir vor ich bin sehr albern, aber jede Hilfe uber würde geschätzt.

Antwort

9

Sie müssen Ihre Mock-up erwarten, um einen Anruf an GetCustomerById eher als die Customers Eigenschaft zu erwarten. Etwas wie dieses:

mockRepos.Setup(x => x.GetCustomerById(1)).Returns(customer[0]); 
+0

Perfect danke. – hoakey

Verwandte Themen