JustMockとEntity Frameworkを使用して、サービスの単体テストを作成しようとしています。サービスでは、私はこの方法があります:JustMockでEntity Frameworkクラスを別のクラスに偽装しよう
List<Log> GetLogType(string type)
{
using (var db = new LogContext())
{
return db.Logs.Where(x => x.Type == type).ToList();
}
}
をそして私は、テストを持っている:
[TestMethod]
public void GetLogTypeTest()
{
IList<Log> logs = new List<Log>
{
new Log() {
Id = 1,
Type = "Debug",
Message = "Test Message"
}
};
var logContext = Mock.Create<LogContext>(Constructor.Mocked).PrepareMock();
logContext.Logs.Bind(logs);
var service = new LogService();
var debugs = service.GetLogType("Debug");
Assert.AreEqual(1, debugs.Count());
}
にはどうすればサービスが私の嘲笑コンテキストを使用するのですか?今すぐデータベースに接続しようとしているため、エラーが発生しています。
ありがとう、私は間違ってそれに近づいていたと思います。多くのリファクタリングが必要ですが、これはうまくいくでしょう。 – RossD
問題ありません。依存性注入がなければ、素晴らしい単体テストを実行することはできません。 DIを使いたくない場合でも、統合テストを実行できますが、その場合はテストデータベースを作成し、テストプロジェクトのapp.config内のそのDBを指すように接続文字列を設定する必要があります。 – kat1330