2011-11-23 22 views
10

Come si crea uno stub puro usando Moq? Con Rhino Mocks ho fatto in questo modo:Come creare uno stub con Moq

[TestFixture] 
public class UrlHelperAssetExtensionsTests 
{ 
    private HttpContextBase httpContextBaseStub; 
    private RequestContext requestContext; 
    private UrlHelper urlHelper; 
    private string stylesheetPath = "/Assets/Stylesheets/{0}"; 

    [SetUp] 
    public void SetUp() 
    { 
      httpContextBaseStub = MockRepository.GenerateStub<HttpContextBase>(); 
      requestContext = new RequestContext(httpContextBaseStub, new RouteData()); 
      urlHelper = new UrlHelper(requestContext); 
    } 

    [Test] 
    public void PbeStylesheet_should_return_correct_path_of_stylesheet() 
    { 
     // Arrange 
     string expected = stylesheetPath.FormatWith("stylesheet.css"); 

     // Act 
     string actual = urlHelper.PbeStylesheet(); 

     // Assert 
     Assert.AreEqual(expected, actual); 
    } 
} 

Come dovrei creare uno stub per MockRepository.GenerateStub<HttpContextBase>(); utilizzando Moq? O dovrei restare con Rhino Mocks?

risposta

1
var mockHttpContext = new Mock<HttpContextBase>(); 
+0

so che c'è una differenza di uno stub e finto, ma che l'implementazione di creare uno stub finto o? Sembra una finta per me? –

+3

La denominazione si riferisce al modo in cui si utilizza questo oggetto. Quindi, se non verifichi nulla su questi oggetti è un mozzicone, se vuoi - è un finto. – BartoszKP

10

Ecco il mio suggerimento per voi:

Mock<HttpContextBase> mock = new Mock<HttpContextBase>(); 
mock.SetupAllProperties(); 

Poi si hanno a che fare il setup.

Per maggiori informazioni vedi homepage of the MOQ project.

+0

Quale configurazione ho bisogno? Ho solo bisogno di usarlo come nel mio codice. Non uso httpContextBaseStub in nessun altro posto. –

+0

Devi configurarlo in questo modo, la tua classe in prova ne ha bisogno. Dipende dal test dell'unità che si desidera eseguire. Puoi dirlo in generale. – Fischermaen

+0

Ho aggiornato il mio test. Si prega di controllare :) –