Có thể kiểm tra đơn vị Asyn không. lập trình socket (sử dụng C#)? Cung cấp một số mã mẫu thử nghiệm đơn vị.C# Asyn. Lập trình Socket
5
A
Trả lời
4
Tôi giả sử bạn đang thử nghiệm một số lớp của riêng bạn sử dụng các luồng .NET; hãy gọi nó là MessageSender
. Lưu ý rằng không có lý do gì để kiểm tra đơn vị dòng .NET, đó là công việc của Microsoft. Bạn không nên đơn vị kiểm tra .NET framework code, chỉ riêng của bạn.
Trước tiên, hãy đảm bảo rằng bạn tiêm luồng được sử dụng bởi MessageSender
. Đừng tạo nó bên trong lớp nhưng chấp nhận nó như một giá trị thuộc tính hoặc đối số hàm tạo. Ví dụ:
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);
}
}
Bây giờ một thử nghiệm Ví dụ: bạn có thể kiểm tra rằng BeginSendHello
gọi BeginWrite
trên dòng, và gửi các byte đúng. Chúng tôi sẽ thử luồng và thiết lập kỳ vọng để xác minh điều này. Tôi đang sử dụng khung RhinoMocks trong ví dụ này.
[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();
}
Các vấn đề liên quan
- 1. Lập trình socket PHP
- 2. Lập trình Socket C/C++ - chức năng recv bị treo?
- 3. Lập trình socket ví dụ trong iphone
- 4. Lập trình Socket trên một máy tính?
- 5. Windows Phone 7: Lập trình Socket
- 6. gửi và nhận file lập trình socket
- 7. làm thế nào để lập trình socket ssl
- 8. Bài đọc tốt về lập trình socket Unix/Linux?
- 9. Lập trình Socket nhiều máy khách một máy chủ
- 10. Giới thiệu tốt về lập trình socket TCP trong Java?
- 11. APM, EAP và TPL trên Lập trình Socket
- 12. Clozure Common Lisp - Lập trình socket TCP - Gửi trả lời
- 13. Lập trình socket so với dịch vụ web?
- 14. Bạn nên sử dụng ruby để lập trình socket?
- 15. Lập trình socket Android mà không cần kết nối WIFi
- 16. sự khác biệt giữa lập trình socket và lập trình Http
- 17. C, lập trình socket: Kết nối nhiều máy khách với máy chủ bằng cách chọn()
- 18. lập trình socket udp không chặn trong C: Tôi phải làm gì?
- 19. Bắt đầu lập trình socket trong C# - Các phương pháp hay nhất
- 20. Ổ C++ socket 256 byte
- 21. TCPClient và Socket trong C#
- 22. API Socket hoặc thư viện cho C++?
- 23. Lập trình USB C++
- 24. lập trình C# mạng
- 25. Cách tốt nhất để thực hiện lập trình socket RAW liên quan đến Java
- 26. C socket API có an toàn không?
- 27. C++ cho lập trình Objective-C
- 28. Lập trình chức năng trong C/C++?
- 29. Protocol Buffer over socket trong C++
- 30. C# và Lập trình Bluetooth