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
この場合、実装が必要な多くのメンバーを持つ大規模なクラスと同様に、独自の実装を展開するのは厄介です。