c# - studio - ¿Está probando un servicio web de WCF?
web service c# (2)
Quería crear una clase de prueba para un servicio WCF. Creo que "burlarse" es el término correcto para esto?
No estoy seguro de que la forma correcta de hacerlo sea la que creo que debo hacer. Me han dado una URL a un servicio WCF, por ejemplo:
http:://somesite.com/wcf/RealService.svc
Y:
http:://somesite.com/wcf/RealService.svc?wsdl
Entonces, en lugar de agregar realmente RealService.svc
a mi proyecto como Service Reference
simplemente agregué un nuevo WCF Service
vacío a mi proyecto llamado Service1
.
Entonces, quiero usar la wsdl.exe
(¿o tal vez la svcutil.exe?) Para generar una interfaz desde la url WSDL: http:://somesite.com/wcf/RealService.svc?wsdl
.
A continuación, abro el archivo Service1.cs
y en lugar de dejar heredar de IService1.cs
dejo heredar de la interface
generada.
Luego, en lugar de llamar al servicio real en mi aplicación, simplemente llamo a mi clase de Service1
. ¿Es así como funciona la burla de un servicio web?
También necesito averiguar cómo generar realmente una interface
con la herramienta svcutil (he leído que no puedo usar wsdl.exe para un servicio WCF). ¡Así que cualquier consejo sobre eso es más que bienvenido también!
Muchas áreas para tocar, intentarán apuntarle en las direcciones correctas:
Si desea probar (es decir, pasar la entrada, verificar el resultado) su servicio WCF, use la herramienta de Visual Studio GUI
WCF Test Client
(artículo de MSDN here ).Si quiere burlarse de su servicio WCF (es decir, prueba de unidad de su componente que consume el servicio WCF), use un marco de burla como
NMock2
que le permiteNMock2
la interfaz de servicio ( here relacionan los SO). También podría codificar manualmente un simulacro (implementando la interfaz), si no desea utilizar un marco externo, pero esto es más complicado.Si desea probar la unidad de su servicio WCF (es decir, escribir pruebas de unidad para el servicio, negocios, datos, etc.), utilice un popular marco de burla ( here relaciona el hilo SO).
Para generar un proxy para su servicio WCF, use la utilidad de línea de comandos svcutil.exe (artículo de MSDN here ) como ha adivinado. Esta utilidad viene con varias opciones (idioma, espacio de nombres, archivo de configuración, etc.), así que preste atención a ellos.
Espero que esto ayude.
Puede generar su proxy utilizando svcutil.exe (desde Visula Studio: Agregar una referencia de servicio ... ). Esto generará su proxy de cliente y una interfaz de servicio .
Por ejemplo, para su servicio http :: //somesite.com/wcf/RealService.svc? Wsdl obtendremos:
- IRealService (interfaz)
- RealServiceClient (implementa IRealService y extiende System.ServiceModel.ClientBase)
Puede crear una clase simulada que implemente su interfaz de servicio (IRealService).
Y en su aplicación en lugar de instanciar el cliente de servicio concreto (RealServiceClient) cuando desea llamar a su servicio, puede utilizar un contenedor de fábrica o un contenedor de IOC.
De esta forma, puede decidir con qué instancia trabaja su aplicación (o módulos / componentes): servicio real en tiempo de ejecución, simulacro al realizar la prueba.