Тестирование IDisposable и WCF клиента - PullRequest
0 голосов
/ 09 сентября 2010

Обычно у меня есть код клиента, похожий на что-то вроде этого:

// SomeOtherServiceClient would be injected in actual code.
ISomeOtherService client = new SomeOtherServiceClient();

... так что я могу издеваться над сервисом для тестирования.Но теперь у меня есть служба WCF, в которой контекстный режим установлен на PerSession и реализует IDisposable.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class SampleService : ISampleService, IDisposable
{
    public void SampleMethod() { ... }
    public void Dispose() { ... }
}

Если я хочу поместить клиента в оператор using, есть ли ещеспособ для меня издеваться над клиентом для тестирования?

// SampleServiceClient would be injected in actual code.
using (var client = new SampleServiceClient())
{
    ...
}

1 Ответ

1 голос
/ 09 сентября 2010

Если я понимаю, проблема в том, что ISomeOtherService является контрактом на обслуживание WCF и не реализует IDisposable, хотя все клиенты-исполнители будут.Вы можете обойти это, изменив оператор using на что-то вроде этого:

public void SampleMethod()
{
    //client was injected somehow
    using(this.client as IDisposable)
    {
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...