2016-05-23 10 views
0

私たちのアプリケーションは、クライアントアプリケーションのweb.configのdll参照とWCF設定エントリを通じてWCF Webサービスと統合されています。 Webサービスを模擬しようとすると、「ServiceModelクライアント構成セクションの契約を参照するデフォルトのエンドポイント要素を見つけることができませんでした。これは、アプリケーションの構成ファイルが見つからないか、このエンドポイント要素が一致しないためです。 "エラー。 問題を解決するために、web.configの対応するバインディングをテストプロジェクトのapp.configファイルに追加し、 "copy always"に設定してbin \ debugフォルダにコピーするように設定しましたが、まだエラーが発生します。 この問題を解決するにはどうすればよいですか?モックWCFサービス参照はサードパーティのDLLを介して公開されています

using Payments.ServiceReferences.PaymentServiceProxy; 
public interface IPaymentsAPIClientGenerator 
{ 
    PaymentServiceClient PaymentServiceClient { get; } 
} 

using Payments.ServiceReferences.PaymentServiceProxy; 
public class PaymentsAPIClientGenerator : IPaymentsAPIClientGenerator 
{ 
    public PaymentsAPIClientGenerator() 
    { 
    } 
    public PaymentServiceClient PaymentServiceClient 
    { 
     get 
     { 
      var paymentServiceClient = PaymentVaultProxyFactory.GeneratePaymentServiceClient(); 
      return paymentServiceClient; 
     } 
    } 
} 

[TestMethod] 
public void IfTheSecondPaymentFailsThenTheFirstPaymentShouldBeVoided() 
{ 
    //Arrange 
    var iPaymentsAPIClientGeneratorMock = new Mock<IPaymentsAPIClientGenerator>(); 
    var paymentServiceClient = new Mock<PaymentServiceClient>(); 
    iPaymentsAPIClientGeneratorMock.SetupGet(counter => counter.PaymentServiceClient).Returns(paymentServiceClient.Object); 
} 

enter image description here

答えて

1

DLLがバインディングの構成を有しているべきであると生成されたプロジェクトのweb.config。 vsでプロジェクト参照としてdllを参照する場合、組み込みの設定を使用する必要があります。それ以外の場合は、バインドをテストアプリケーションの構成にコピーするのが最も簡単な解決策です。

+0

私はそれを試みましたが、動作しません。テストプロジェクトのapp.configファイルにバインディングをコピーし、常にコピーに設定しました。また、app.configファイルは、テストプロジェクトのbin \ debugフォルダに表示されていますが、同じエラーが表示されます。 –

+0

すべての設定をdllのapp.configからテストアプリケーションのapp.configにコピーしますか?最も重要なのはsystem.serviceModelセクションですか?アプリケーションは、そのスコープから構成要素を読み込みます。そうする必要はありませんが、テストコンストラクターのコードを通じてエンドポイントの設定を上書きすることもできます。 –

+0

はいそれはすべてそこにあります。作成した模擬テスト(単体テストで)がapp.configにあるバインディングと一致しないと考えています。 –

関連する問題