¿Es posible probar la unidad de Asyn por unidad? programación de socket (usando C#)? Proporcione algún código de prueba de unidad de muestra.C# Asyn. Programación de tomas
5
A
Respuesta
4
Supongo que está probando alguna clase propia que use flujos de .NET; llamémoslo MessageSender
. Tenga en cuenta que no hay ninguna razón para probar las transmisiones de .NET por sí mismos, ese es el trabajo de Microsoft. No deberías probar el código .NET framework, solo el tuyo.
En primer lugar, asegúrese de que inyecte la corriente utilizada por MessageSender
. No lo cree dentro de la clase, pero acéptelo como un valor de propiedad o un argumento de constructor. Por ejemplo:
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);
}
}
ahora una prueba de ejemplo: usted podría probar que BeginSendHello
invoca BeginWrite
en la corriente, y envía los bytes correctos. Nos burlaremos de la transmisión y establecemos una expectativa para verificar esto. Estoy usando el marco RhinoMocks en este ejemplo.
[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();
}
Cuestiones relacionadas
- 1. tomas Python búfer
- 2. Tubería entre tomas
- 3. Múltiples tomas con UITapGestureRecognizer
- 4. tomas pasivas y activas
- 5. Java: tomas de corriente o RMI?
- 6. filtrado de tomas simples y dobles
- 7. UIScrollView: rollos de tomas individuales que al principio de la
- 8. Programación de Windows C++ C++
- 9. C++ Concursos de programación
- 10. debe mantenerse abierta o tomas derribado
- 11. Diferencia entre Linux y winsock tomas
- 12. Use el enhebrado y las tomas en C de una manera independiente de la plataforma
- 13. Programación interactiva de consola para c/C++?
- 14. Qt tutoriales de programación (C++)?
- 15. C# y programación de Bluetooth
- 16. Programación de socket en C++
- 17. C# programación de tarjetas inteligentes
- 18. Programación genética en C#
- 19. Programación paralela y C++
- 20. Programación paralela en C#
- 21. simple c programación gui
- 22. mediante programación en C#
- 23. Programación concurrente C++?
- 24. Programación funcional en C++
- 25. programación C# red
- 26. Programación C Función sqrt
- 27. C Programación: + = vs = +
- 28. control programático de tomas de corriente en el Reino Unido
- 29. de cierre serie/tomas de corriente y try-catch-finally
- 30. iOS chat APNS, tomas de corriente o intervalo de tiempo