0

F# で Azure の永続的な関数を作成し、 https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-unit-testingのガイドラインに従って単体テストを作成しようとしています。 . Foq を使用して抽象クラスのモック インスタンスを作成しようとしましたDurableOrchestrationContextBaseが、次のエラーで失敗します。

System.TypeLoadException : アセンブリ 'Foq.Dynamic、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' のタイプ 'Mock.DurableOrchestrationContextBase1953fcc2-be15-41fc-850c-5a5813aace89' のメソッド 'set_InstanceId' は、次のメソッドをオーバーライドしています。そのアセンブリからは見えません。

エラーはこのプロパティに関連しています:

public virtual string InstanceId { get; internal set; }

さらに調査すると、Foq は抽象 C# クラスの内部セッターを使用して非仮想および非抽象プロパティをモックできますが、それらが仮想の場合、そのようなプロパティに対処できないことが示されています。

F# テストでそのようなクラスをモックする方法はありますか? DurableOrchestrationContextBaseこの場合、実装が必要な多くのメンバーを持つ大規模なクラスと同様に、独自の実装を展開するのは厄介です。

4

1 に答える 1