Czy można przetestować urządzenie Asyn? programowanie gniazd (przy użyciu C#)? Podaj kod przykładowej jednostki testowej.C# Asyn. Programowanie gniazda
5
A
Odpowiedz
4
Zakładam, że testujesz jakąś klasę własną, która używa strumieni .NET; nazwijmy to MessageSender
. Zauważ, że nie ma powodu, aby samemu testować strumienie .NET, to jest zadanie Microsoftu. Nie powinieneś testować kodu testowego platformy .NET, tylko własny.
Najpierw upewnij się, że jesteś wstrzykuje strumień używany przez MessageSender
. Nie twórz go wewnątrz klasy, ale akceptuj jako wartość właściwości lub argument konstruktora. Na przykład:
public sealed class MessageSender
{
private readonly Stream stream;
public MessageSender(Stream stream)
{
if (stream == null)
throw new ArgumentNullException("stream");
this.stream = stream;
}
public IAsyncResult BeginSendHello(AsyncCallback callback, object state)
{
byte[] message = new byte[] {0x01, 0x02, 0x03};
return this.stream.BeginWrite(
message, 0, message.Length, callback, state);
}
public void EndSendHello(IAsyncResult asyncResult)
{
this.stream.EndWrite(asyncResult);
}
}
Teraz test przykład: można sprawdzić, BeginSendHello
wywołuje BeginWrite
na strumień i wysyła odpowiednie bajty. Prześmiewamy strumień i ustalamy oczekiwanie, aby to zweryfikować. W tym przykładzie używam architektury RhinoMocks.
[Test]
public void BeginSendHelloInvokesBeginWriteWithCorrectBytes()
{
var mocks = new MockRepository();
var stream = mocks.StrictMock<Stream>();
Expect.Call(stream.BeginWrite(
new byte[] {0x01, 0x02, 0x03}, 0, 3, null, null));
mocks.ReplayAll();
var messageSender = new MessageSender(stream);
messageSender.BeginSendHello(null, null);
mocks.VerifyAll();
}
Powiązane problemy
- 1. Programowanie gniazda PHP
- 2. Programowanie gniazda a serwis internetowy?
- 3. Programowanie gniazda unix C, connect() wiszące na niepoprawnej nazwie hosta
- 4. Programowanie C# i Bluetooth
- 5. C programowanie funkcji sqrt
- 6. xrandr związane, C programowanie
- 7. Programowanie gniazd w C++
- 8. Programowanie rozproszone w C++
- 9. Programowanie równoległe w C#
- 10. C# Programowanie gniazd, zamykanie okien
- 11. Gniazda, liczba dostępnych bajtów (C#)
- 12. Tworzenie podstawowego C/C++ gniazda TCP pisarza
- 13. Programowanie GPU?
- 14. Programowanie języka Windows Assembly Programowanie
- 15. Pustka * używana do utrzymywania stanu ... (programowanie C)
- 16. Programowanie zorientowane na aspekt w C#
- 17. (międzyplatformowe) Programowanie 3D za pomocą C# (mono)
- 18. Programowanie gier w C, od czego zacząć?
- 19. Programowanie szeregowe w C, w DOS
- 20. Jak używać kbhit i getch (programowanie C)
- 21. Programowanie gniazd: serwer klienta UDP w C
- 22. C++ potęga liczby całkowitej, programowanie meta szablonów
- 23. Programowanie gier na Objective-C i Linuksie
- 24. Programowanie ogólne w C z pustym wskaźnikiem
- 25. Game Boy Programowanie kolorów w C
- 26. Montaż: Adres pamięci zmiennych w C Programowanie
- 27. Otrzymuję strumień obiektu gniazda w C#
- 28. C++ read() - z gniazda do strumienia od
- 29. Czy gniazda są zintegrowane ze standardem C++?
- 30. Qt i C++ - niezdefiniowane odniesienie do gniazda