私はIDisposable DbContextを持っている仕事をしています。私はデータベースにぶつかることなくこの仕事をユニットテストしたいと思います。どのようなオプションが必要ですか?UnityでIDisposableリポジトリを扱うには?
マイクロソフトのデフォルトのFakeアセンブリを使用しています。
私の仕事:私はテストしようとしているし、それが実際にリポジトリクラスの新しいインスタンスを作成するためのテストのこの部分では、それが失敗した
public void Work()
{
do
{
//code here
using (var repository = new Repository<User>())
{
repository.Save(user);
}
} while (true);
}
。
私のテスト方法:
using (ShimsContext.Create())
{
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.Constructor = (a) => { };
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.AllInstances.SaveT0 = (a, b) =>
{
};
var service = GetService();
service.Work(); //Throws exception
}
どのように私は偽物このSave
方法?
参照依存性注入 - 渡されたパラメータをWork()に許可する必要があります。または、少なくともそれ以外の場合は常に実際のものを作成します。 –
私はFakesに慣れていませんが、あなたのニーズに十分に対応しているとは限りません。私はこれがMoq(https://github.com/Moq/moq4)のような図書館では些細なことだと知っています。 –
仕事でリポジトリの実際の具体的なインスタンスをインスタンス化しているので、Moqでもそれは自明ではありません。 –