0

FakeItEasy で System.Type オブジェクトから偽物を作成する方法はありますか? に似ている:

var instance = A.Fake(type);

解決されたすべての型の偽物を自動的に返す AutoFac の偽のコンテナーを作成しようとしました。私は FakeItEasy のコードを調べましたが、これをサポートするすべてのメソッドは内部クラスの背後にありますが、非常に興味深いインターフェイス IFakeObjectContainer を見つけましたが、実装にはまだオブジェクトの登録が必要です。

4

2 に答える 2

2

FakeItEasy 2.1.0 の時点で (ただし、より多くの機能とより良いバグ修正のために最新リリースにアップグレードすることを検討してください)、次のように Type から偽物を作成できます。

using FakeItEasy.Sdk;

…

object fake = Create.Fake(type);

以前のリリースを使用する必要がある場合は、リフレクション ベースのアプローチを使用して、A.Fake() メソッドのメソッド情報を作成できます。(これは自動モックに関するものであるため、これは実際には問題になりません)。

于 2011-07-09T21:08:48.833 に答える
1

これは、登録ハンドラを使用して行うのが最適です。AutofacContrib.Moq がどのように実装されているかを調べる必要がありますMoqRegistrationHandler。実際にはジェネリック メソッドMockRepository.Createを使用して偽のインスタンスを作成していることがわかります。FakeItEasy の同様のハンドラーを作成するのは非常に簡単です。

于 2011-07-08T07:10:12.743 に答える