WCF サービスに依存するクラスをコーディングしようとしていますが、クラスを単体テスト可能にしたいと考えています。以下のコードを思いついたのですが、ちょっとトリッキーな状況に陥りました
public class BenefitReason
{
private IWCFServiceClient _client;
public BenefitReason(IWCFServiceClient client)
{
_client = client;
}
public CanIssueEmercengyBenefit(string benefitReasonCode)
{
client.GetEmergencyBenefits().contains(benefitReasonCode);
}
//Rest of implementation for Benefit Reason
}
これはモックできるので単体テスト可能ですがIWCFServiceClient
、クライアントを制御できなくなりました。BenefitReason
オブジェクトが作成されてから呼び出されるまでの間にクライアント チャネルが閉じられた場合CanIssueEmercengyBenefit
、例外が発生します。
単体テストできるコードを書くのと、wcf クライアントのインスタンス化で制御を失うという、このトリッキーな状況を乗り越える方法についてアドバイスをお願いします。