Tengo que escribir mucho código relacionado con los puertos serie. Por lo general, habrá un dispositivo conectado en el otro extremo del cable y generalmente creo mis propios simulacros para simular su comportamiento.¿Cómo puedo crear una simulación SerialPort usando la biblioteca Moq?
Estoy empezando a consultar Moq para ayudar con mis pruebas unitarias. Es bastante simple de usar cuando solo se necesita un stub, pero quiero saber si es posible y, en caso afirmativo, cómo creo un simulacro para un dispositivo de hardware que responde de manera diferente según lo que quiero probar.
Un ejemplo simple:
Uno de los dispositivos de E interfaz con recibe un comando (mover a la posición x), da de nuevo un mensaje de ACK y pasa a un estado "movimiento" hasta que alcanza la posición ordenada.
Quiero crear una prueba donde envíe el comando mover y luego seguir consultando el estado hasta que llegue a la posición final.
Quiero crear dos versiones del simulacro para dos pruebas diferentes, una donde espero que el dispositivo llegue a la posición final con éxito y la otra donde fallará.
¿Demasiado pedir?
Sí, ya tengo un ISerialDrive, un SerialPortDrive y un par de clases MockSerialPortDrive. Uso SerialPortDrive para mi código de producción, y utilizo un simulacro para cada tipo de dispositivo que estoy probando. Algunos son bastante sencillos y podrían ser reemplazados fácilmente por un simulacro Moq, pero otros implementan una simulación más inteligente del hardware que conectan. –