Orchard の Clay 機能の一部を効果的にモックする方法について、誰かアドバイスがあれば教えてください。IClayWrapper
より複雑な動的呼び出しの一部をラップするラッパー インターフェイス を作成するところまで行きました。残念ながら、これらのラッパー メソッドは動的オブジェクトを返す必要があるため、まだ問題があります。以下に小さな例を示します。
public interface IClayWrapper : IDependency
{
dynamic BuildClipCreateViewModel(string projectTitle, string moduleTitle, dynamic clipForm);
}
public class WhenViewingCreateClip : GivenAClipController
{
private IEnumerable<ContentItem> queryResults;
protected override ClipController Establish_context()
{
var queryResults = new List<ContentItem>
{
new ContentItem(),
new ContentItem(),
};
ClayWrapperMock.Setup(x => x.BuildLookupListFromQuery(queryResults, "Create")).Returns(It.IsAny<dynamic>());
}
}
私が現在直面している問題は、Moq が次のエラーを返すことです。
セットアップ: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: ' ' には ' '
Moq.Language.Flow.ISetup<Aqovia.Module.MotionGallery.Infrastructure.IClayWrapper,object>
の定義が含まれていませんReturns
基本的に、Returns
メソッドを Moq から動的呼び出しに変更しました。これは、ラップを試みる前に Clay で直面していた主な問題の 1 つです。同様の結果が得られる偽のシェイプ ファクトリも導入してみました。このようなものをテストする効果的な方法を見つけた人はいますか? テストしない以外は?