0
我喜欢模拟以下以确保ExecuteNonQuery被调用,但不知道该怎么做,因为我试过我得到了可能的异常,并且无法正确实现..我正在使用Rhino Mock如何模拟context.Database.Connection.CreateCommand
using (var command = _context.Database.Connection.CreateCommand())
{
command.CommandText = @"testproc_ins";
command.CommandType = CommandType.StoredProcedure;
SqlParameter[] parameters = GetParameters(transaction);
command.Parameters.AddRange(parameters);
command.Connection.Open();
command.ExecuteNonQuery();
command.Connection.Close();
}
你mean't说我需要在放置的CommandFactory和模拟的_context.Database.Connection.CreateCommand()他们。但我不喜欢为单行创建一个CommandFactory类。 – 2014-09-25 09:52:38
欢迎来到使用模拟对象进行单元测试的世界:)有时候这是一种痛苦,但是没有其他简单的方法 - 您必须以某种方式注入您的依赖关系,并且您的依赖关系是创建命令的对象。另一种方法是提供你自己的_context封装,这样_context.Database.Connection就在你的直接控制之下 - 但我不知道这是否容易。 – FarmerBob 2014-09-25 09:58:16
嗨,你的第二个想法为我工作。我将_context.Database.Connection作为虚拟方法包装到上下文类中,以便我可以通过嘲讽来控制它。谢了哥们。 – 2014-09-26 07:27:08