0
我有一個示例方法,它檢查表是否被佔用。這是我第一次進行單元測試,並且認爲單元測試只是單獨編碼,並且應該嘲笑在數據庫上執行的任何操作,否則它將成爲集成測試。我不太清楚如何去嘲笑這個,如果任何人都能指出我的正確方向。如何模擬連接到MS Access數據庫的方法
public bool isTableOccupied(string tableID)
{
bool tableOccupied = false;
try
{
connection.Open();
using (OleDbCommand command = new OleDbCommand())
{
command.Connection = connection;
command.CommandText = "SELECT [Occupied] FROM [Table] WHERE [TableID] [email protected]";
command.Parameters.AddRange(new OleDbParameter[] {
new OleDbParameter("@TableID", tableID)
});
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
if (reader["Occupied"].ToString() == "True")
{
tableOccupied = true;
}
}
}
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
}
return tableOccupied;
}
如果此方法不與任何其他方法交互,您認爲這是否值得?所以它的返回並不妨礙我單元測試其他方法。我應該直接進行這種方法的集成測試並跳過單元測試嗎? – user5467760
所有我覺得嘲笑這種方法做的是改變它'布爾isTableOccupied(「tableID」){返回true}'。有沒有什麼意思?' – user5467760
它當然取決於每一個獨特的場景 - 它可能不值得你的情況,但通常好的做法是抽象出接口後面的數據訪問代碼。代碼將在未來爲您自己和其他人提供更好的可維護性和可測試性。我給出的返回true的例子只是一個例子。你可以設置模擬返回不同的值,取決於提供的特定ID。正如我所說,每個場景都是獨一無二的。我只會說,只有測試它是否增加了價值並聲稱有價值的東西,通常集成測試可能會更有用。 – abrown