問題タブ [foq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
107 参照

unit-testing - Foq で内部的に設定可能な仮想プロパティを使用して抽象クラスをモックする

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' は、次のメソッドをオーバーライドしています。そのアセンブリからは見えません。

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

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

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