У меня есть некоторые проблемы с поддельными службами WCF:
1) Я объявляю класс с пустыми методами, который реализует только мой интерфейс службы:
public class MyFakeService : IMyService {
...
public virtual MyResult GetResult(MyResponse response){
throw new NotImplementedException();
};
}
2) У меня есть класс MyResponse:
public class MyResponse {
public long myField;
}
3) Я создаю макет класса сервиса и хоста сервиса для размещения этого фальшивого сервиса:
myFakeService = mocks.StrictMock<MyFakeService>();
ServiceHost host = new ServiceHost(myFakeService);
(здесь я опустил конфигурацию конечной точки и т. Д.)
4) А теперь я пытаюсь проверить мой клиент. Метод client.GetSomethingFromService()
точно вызывает метод GetResult(MyResponse)
службы.
With.Mocks(mocks)
.Expecting(() => Expect
.Call(myFakeService.GetResult(null))
.IgnoreArguments()
.Constraints(PublicField.Value("myField", 777))
.Return(new MyResult()))
.Verify(() => myClient.GetSomethingFromService());
Проблема в том, что если что-то не так в сервисе, я вижу только что-то вроде этого:
System.ServiceModel.CommunicationObjectFaultedException:
The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used
for communication because it is in the Faulted state.
Откуда мне знать, что именно не так? Может быть, проверка аргументов не выполнена или что-то еще ...?
Спасибо.