Come faccio a prendere in giro una richiesta di pagina per una pagina .net MVC?Test unitario in asp.net MVC, come faccio a prendere in giro una richiesta di pagina?
8
A
risposta
15
Uso RhinoMocks:
var httpContext = MockRepository.GenerateMock<HttpContextBase>();
var httpRequest = MockRepository.GenerateMock<HttpRequestBase>();
httpContext.Expect(c => c.Request).Return(httpRequest).Repeat.Any();
... set up expectations on request...
var controller = new MyController();
controller.ControllerContext = new ControllerContext(httpContext,
new RouteData(),
controller);
...invoke action, check assertions...
httpContext.VerifyAllExpectations();
httpRequest.VerifyAllExpectations();
11
Uso Moq:
var request = new Mock<HttpRequestBase>(MockBehavior.Strict);
request.Setup(x => x.ApplicationPath).Returns("/");
request.Setup(x => x.Url).Returns(new Uri("http://localhost/home"));
request.Setup(x => x.ServerVariables).Returns(new System.Collections.Specialized.NameValueCollection());
var context = new Mock<HttpContextBase>(MockBehavior.Strict);
context.SetupGet(x => x.Request).Returns(request.Object);
var controller = new YourController();
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
11
manualmente (perché odio derisione quadri che richiedono 8 righe di configurazione per prova)
// in some common location, only once
public class MockHttpContext : HttpContextBase
{
public MockHttpRequest m_request = new MockHttpRequest();
public MockHttpResponse m_response = new MockHttpResponse();
public override HttpRequestBase Request
{ get { return m_request; } }
public override HttpResponseBase Response
{ get { return m_response; } }
}
public class MockHttpRequest : HttpRequestBase
{
// override whatever bits you want (eg cookies)
}
public class MockHttpResponse : HttpResponseBase
{
// override whatever bits you want (eg cookies)
}
// in your specific test
controller = new YourController {
ControllerContext = new ControllerContext { HttpContext = new MockHttpContext() }
};
Problemi correlati
- 1. Come prendere in giro una richiesta AJAX?
- 2. Come faccio a prendere in giro solo una risposta Alamofire?
- 3. come faccio a prendere in giro una richiesta json post in anello?
- 4. Come faccio a prendere in giro un plugin jQuery?
- 5. Come si prende in giro l'oggetto caching in asp.net mvc?
- 6. come vorrei prendere in giro una querystring
- 7. Come prendere in giro una classe interna privata
- 8. Come prendere in giro instanceof in Mockito
- 9. Come faccio a prendere in giro una proprietà di classe con mox?
- 10. Come faccio a prendere in giro la classe java.lang.reflect.Method in PowerMockito?
- 11. Come prendere in giro un attributo mancante
- 12. Test unitario su asp.net
- 13. Come prendere in giro una connessione socket in uscita?
- 14. Come faccio a prendere in giro un campo @Value autowired in primavera con Mockito?
- 15. Come prendere in giro una lista autorizzata di bean Spring?
- 16. Come posso prendere in giro Assemblare?
- 17. Come faccio a prendere in giro un gestore di segnale django?
- 18. Come posso prendere in giro una richiesta Web esterna in PHPUnit?
- 19. Come posso prendere in giro la routine ErrorSignal di Elmah?
- 20. Come prendere in giro un aspetto
- 21. Come prendere in giro una variabile dao privata?
- 22. Test unitario accuratamente per le applicazioni ASP.Net MVC 4
- 23. Come posso prendere in giro un database falso per il test dell'unità contro Knex?
- 24. Libro di test unitario consigliato per un ambiente MVC ASP.NET
- 25. Per quale motivo dovrei prendere in giro?
- 26. Prendere in giro una classe concreta usando EasyMock
- 27. Come prendere in giro il valore restituito da una mappa?
- 28. Rileva una richiesta interrotta in ASP.NET MVC
- 29. Come prendere in giro un SqlDataReader usando Moq - Aggiornamento
- 30. Come posso prendere in giro la richiesta dell'API di Geocoding di Google utilizzando mockito/powermock?
mi piace. Questo è molto più facile da capire che prendere in giro. Qualche motivo per cui m_request e m_response sono pubblici? –
perché è un oggetto falso progettato per semplificare le prove. Rendendoli privati significherebbe solo se volessi cambiarli (e qualche volta potresti) Avrei bisogno di avere una proprietà, ecc. Ecc. Alcune regole come l'occultamento dell'implementazione sono attivamente dannose in questo tipo di ambiente –
Ho capito perché loro Sono pubblico subito dopo che ho fatto la domanda. Né richiesta né risposta non hanno setter, perché è così che è in HttpContextBase. Quindi, se ho bisogno di mutare la richiesta e la risposta dai miei test unitari, ho bisogno che siano pubblici. –