EF(バージョン6、価値のあるもの)に関しては、私は実際の問題を抱えています。Entity FrameworkとTypeMockを使ったモック
これは私がテストしようとしている方法である:
public async Task<bool> IsSurveyComplete(Guid entityRef)
{
using (MyDbEntities context = new MyDbEntities())
{
MyEntity entity = await context.MyEntities.FindAsync(entityRef);
// do stuff
}
}
それが実際だから、私は偽の「実体」する必要がありますが、私はちょうどIsolate.Fake.Instanceをやろうとすると、動作しないことに気づきましたMyEntity型のインスタンスではなくObjectProxyです。私はこれを回避する方法がcontext.Configuration.ProxyCreationEnabledをfalseに設定することであることを発見しました。 しかし、これはコンストラクタを除いてどこでも実行できます。私がDbContextConfigurationを偽造しようとすると、依然としてプロキシが使用されます。
だから、私は、使用する新しいコンストラクタを作成したときのテスト:
public MyDbEntities(bool useProxy)
: base("name=MyDbEntities")
{
this.Configuration.ProxyCreationEnabled = useProxy;
}
、その後、私のテストで:
Isolate.WhenCalled(() => new MyDbEntities()).WillReturn(new MyDbEntities(false));
しかし、ProxyCreationEnabledプロパティがまだtrueに設定されているとき、I usingステートメントの後に、IsSurveyCompleteメソッドにブレークポイントを設定します。
は私も(多くの、多くの他のものの間で)試してみました:私はブレークポイントを調査する際にvar fakeContext = new MyDbEntities(false);
Isolate.Swap.AllInstances<MyDbEntities>().With(fakeContext);
ここでも、ProxyCreationEnabledが真です。
私はTypeMockをあきらめています!
をあなたはしてくださいすることができます"IsSurveyComplete"のコードとテストをアップロードしますか? –