2012-06-19 9 views
18

Tengo un código que descarga algunos feeds RSS.Necesito algunos consejos para intentar simular un WebClient .NET o equivalente

He estado usando WebClient o Argotic.Syndication.RssFeed bibliotecas.

Pero estos no son mockable :(

Yo definitivamente no quiero golpear la verdadera fuente RSS cada vez que ejecute la prueba unitaria.

¿Alguien tiene alguna sugerencia de lo que pueda hacer?

¿Es necesario crear un envoltorio mal si es así .. sugerencias sobre esto?

Respuesta

16

Voy a crear un contenedor para cada dependencia externa (si es práctico). Por lo tanto, cada interacción con el sistema de archivos/un servicio web/base de datos debe hacerse a través de una interfaz solamente, lo que conducirá a un código más comprobable.

Otra solución, por supuesto, es (como siempre) Typemock Isolator.

19

¿alguien tiene alguna sugerencia para lo que puedo hacer?

Resume la llamada HTTP real detrás de una interfaz. Luego, escriba una implementación de esta interfaz usando WebClient. Ahora haz que tu clase principal tome esta interfaz como dependencia. Ahora puede simular esta interfaz en la prueba unitaria y configurar su marco de inyección de dependencias para inyectar la implementación correcta en el tiempo de ejecución.

+6

De acuerdo con usted. Ejemplo: [Mocking System.Net.WebClient] (http://brunov.info/blog/2013/07/30/tdd-mocking-system-net-webclient/). –

Cuestiones relacionadas