Кто-либо успешно дразнил класс Сокета в.NET?

Некоторый ввод с клавиатуры использования (тайм-ауты между нажатиями клавиш), я слышал о, я думаю в романе, что радио-статический прием может использоваться - но конечно который требует другого аппаратного и программного обеспечения...

9
задан John Saunders 28 December 2009 в 17:15
поделиться

4 ответа

Всякий раз, когда я сталкиваюсь с подобными проблемами с Moq, я в конечном итоге создаю интерфейс, чтобы абстрагироваться от того, что я не могу высмеивать.

Итак, в вашем случае у вас может быть интерфейс ISocket. который реализует метод Send. Тогда пусть ваш фреймворк имитирует это вместо этого.

В вашем фактическом коде у вас будет такой класс

public class MySocket : ISocket
{
  System.Net.Sockets.Socket _socket;

  public void MySocket(System.Net.Sockets.Socket theSocket)
  {
    _socket = theSocket;
  }

  public virtual void Send(byte[] stuffToSend)
  {
    _socket.Send(stuffToSend);
  }

}

Не уверен, что это соответствует вашим потребностям, но это вариант.

14
ответ дан 4 December 2019 в 11:43
поделиться

Причина, по которой вы получаете SocketException при вызове метода Send, заключается в том, что Send не является переопределяемым методом. Чтобы RhinoMocks мог имитировать поведение свойства или метода, он должен быть либо определен в интерфейсе (который мы затем создаем в нашем макете), либо его можно переопределить.

Единственное решение этой проблемы - создать макет класс-оболочка (как предлагает thinkzig).

2
ответ дан 4 December 2019 в 11:43
поделиться

Лучше создать интерфейс и смоделировать его в своем тесте, а также реализовать в своем коде класс-оболочку, который перенаправляет все вызовы методов в сокет .NET, как сказал Thinkzig. Посмотрите на эту ссылку, это та же проблема: Как вы имитируете файловую систему в C # для модульного тестирования?

0
ответ дан 4 December 2019 в 11:43
поделиться

Я создал пример консольного приложения, используя метод thinkzig suggests (класс адаптера для Socket). Он использует RhinoMocks и NUnit. Вы можете скачать его здесь: Как насмехаться над System.Net.Sockets.Socket.

.
1
ответ дан 4 December 2019 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: