Каков наилучший способ для модульного тестирования ожидаемых отказов от служб WCF?
Я пытаюсь выполнить модульное тестирование службы WCF, которая (правильно) выбрасывает исключения FaultException для определенной воспроизводимой ошибки. Модульные тесты получают экземпляр клиента WCF и вызывают соответствующий метод службы, который выдает FaultException.
Все это работает так, как вы ожидаете, но у меня возникли трудности с модульным тестированием, потому что из-за ошибки происходит сбой IDE, когда ошибка не обнаруживается в реализации службы. Поскольку я использую ошибки, а не исключения, я ожидал, что среда IDE сериализирует исключение и отправит его клиенту, где оно вызовет исключение.
Я вижу, что есть опция конфигурации для отключения взлома для определенных необработанных пользователем исключений, но я надеялся, что кто-нибудь мог бы указать лучший способ достижения тех же результатов, поскольку это не легко выполнимо в командной среде .
Вот пример кода того, как в настоящее время выглядит реализация ...
В проекте модульного теста есть ссылка на службу для моей службы WCF, и я определил интерфейс следующим образом:
[OperationContract(Name = "DoSomething")]
[FaultContract(typeof(EpicFail))]
ResponseObject DoSomething(RequestObject requestObject);
Ошибка определяется следующим образом:
[DataContract]
public class EpicFail
{
public EpicFail(string action)
{
this.Reason = "Epic Fail";
this.Action = action;
}
[DataMember]
public string Reason
{
get;
set;
}
[DataMember]
public string Action
{
get;
set;
}
}
Код, который вызывает службу, выглядит примерно так:
[TestMethod()]
[ExpectedException(typeof(FaultException<EpicFail>))]
public void FaultTest_Fails_Epicly()
{
bool testPassed = false;
try
{
ResponseObject resp = GetServiceClient().DoSomething(req);
}
catch (FaultException<EpicFail>)
{
testPassed = true;
}
Assert.IsTrue(testPassed);
}
- Я отредактировал код, чтобы показать, что я использую атрибут ExpectedException, и, похоже, он не оказывает большого влияния на предотвращение взлома IDE / Debugger при возникновении исключения в службе.