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