У меня есть класс, производный от SoapExtension.Для модульного тестирования, например, метода ProcessMessage (SoapMessage), мне необходимо ввести SoapMessage, который является абстрактным классом.Когда я пытаюсь это сделать, я получаю сообщение об ошибке, в котором говорится, что в нем нет конструкторов.Даже если бы я создал новый класс, производный от SoapMessage, я не смогу создать свой собственный конструктор.Я не могу обойти это с помощью макета, потому что мне нужно иметь возможность установить свойство SoapMessage.Stage, чтобы ProcessMethod мог выполнить свой оператор switch, но это свойство доступно только для чтения.Как я могу получить свой собственный производный класс SoapMessage, в котором я могу установить свойство .Stage или это невозможно и, следовательно, невозможно провести модульное тестирование?
Пример:
public override void ProcessMessage(SoapMessage message)
{
switch (message.Stage)
{
case SoapMessageStage.BeforeSerialize:
break;
case SoapMessageStage.AfterSerialize:
WriteOutput( message );
break;
case SoapMessageStage.BeforeDeserialize:
WriteInput( message );
break;
case SoapMessageStage.AfterDeserialize:
break;
}
}
Вы можете увидетьобъяснение SoapMessage из MSDN: http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapmessage.aspx