Muszę napisać dużo kodu, który zajmuje się portami szeregowymi. Zwykle na drugim końcu drutu pojawi się urządzenie, a ja zwykle tworzę własne drwiny, aby symulować ich zachowanie.Jak utworzyć próbę SerialPort przy użyciu biblioteki Moq?
Zaczynam patrzeć na Moq, aby pomóc w testach jednostkowych. Jest bardzo prosty w użyciu, gdy potrzebujesz tylko kodu pośredniczącego, ale chcę wiedzieć, czy jest to możliwe, a jeśli tak, to jak utworzyć próbę dla urządzenia sprzętowego, które reaguje inaczej w zależności od tego, co chcę przetestować.
Prosty przykład:
Jednym z urządzeniami I-Interface z odbiera polecenia (ruch do pozycji X), oddaje się komunikat ACK i przechodzi do stanu „Moving”, aż osiągnie zamówionej pozycji.
Chcę utworzyć test, w którym wysyłam polecenie przenoszenia, a następnie sprawdzaj stan, aż osiągnie ostateczną pozycję.
Chcę utworzyć dwie wersje próbne dla dwóch różnych testów, jedną, w której oczekuję, że urządzenie osiągnie ostateczną pozycję, a drugie, gdzie zakończy się niepowodzeniem.
Za dużo, aby zapytać?
Tak, mam już ISerialDrive, SerialPortDrive i kilka klas MockSerialPortDrive. Używam SerialPortDrive dla mojego kodu produkcyjnego i używam jednego próbnego dla każdego testowanego urządzenia. Niektóre są dość proste i można je łatwo zastąpić próbkami Moq, ale inne implementują inteligentniejszą symulację sprzętu, z którym się łączą. –