0

設定

  • ソリューションはプリズムを使用します
  • VBで書かれたモジュールプロジェクト
  • C#で書かれたテストプロジェクト

私の単体テストでは、モジュールによって使用されるサービスをモックアップして合格しますが、モジュールが解決しようとすると、次の例外で失敗します

    {"Resolution of the dependency failed, type = "UnderwritingWorkflow.Common.Services.IValidationService", name = "(none)".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The current type, UnderwritingWorkflow.Common.Services.IValidationService, is an interface and cannot be constructed. Are you missing a type mapping?

例外の時点で、コンテナは次のとおりでした。

UnderwritingWorkflow.Common.Services.IValidationService、(none)"}を解決しています

UnityContainerにオブジェクトを登録するためのコードは次のとおりです。

var validationService = new Mock<IValidationService>(MockBehavior.Strict);

validationService.Setup(x => x.Validate(Moq.It.IsAny<object>()))
                 .Returns(() => new ValidationResults());

Container.RegisterInstance(validationService.Object);

また、(コンストラクター内から)登録した直後にc#からIServiceValidationを解決しようとすると、機能するようです。

Container.Resolve<IValidationService>();

なぜこれが起こっているのか考えはありますか?

注:実行時にクラスを作成するMoqモックフレームワークを使用していますが、VBの制限で使用できないのではないかと思います。

4

1 に答える 1

1

この問題の原因を突き止めました。これは Moq フレームワークの制限です。明らかに、Moq は拡張メソッドを含む静的メソッドをモックできず、Container.Resolve は拡張メソッドであるため、失敗します。

于 2012-09-11T09:03:17.867 に答える