3
サービスで自動生成WCFクライアントを参照しています。以下のようにしてユニットテストサービスとモック自動生成WCFクライアントプロキシ
//Autogenerated Service client
public partial class ServiceClient :
System.ServiceModel.ClientBase<IService>, IService
{
//...
}
//Autogenerated Interface Client
public interface IService {
//...
}
:
public MyService{
public IExternalWsClientFactory ExternalWsClientFactory {get; set; }
public void MyMethod(){
using (var wsCliente = ExternalWsClientFactory.ServiceClient())
{
//...
}
}
}
public class ExternalWsClientFactory : IExternalWsClientFactory
{
public ServiceClient ServiceClient()
{
var wsClient = new ServiceClient();
return wsClient;
}
}
は、私は、コードブロックの最後でリソースを配置するusing
声明を使用したいので、私は実装を参照します。 IDisposable
がClientBase
にあり、インターフェイスが部分的ではないためです。
私の問題は、ServiceClient
(私はすでに偽装外部WsClientFactory
)を模擬したいのですが、私が実装を使用して以来、これを行うには苦労しています。
注:実装での自動生成方法ServiceClient
はvirtual
ではありません。
クラスは部分的であるとあなたの拡張インターフェイスを使用することができるはずです。インターフェイスはそうではありません。元のインターフェイスから派生し、 'IDisposable'で拡張する独自のインターフェイスを作成します。あなたのカスタムインターフェースで部分クラスを拡張して、今では 'using'ステートメントで拡張インターフェースを使うことができるはずです – Nkosi
ああ、男の子!私はそれがこれを行う怠惰な方法であることを望みました。 11 Web Service Referenciaがあります。ありがとう@ Nkosi – panox