Ich habe unten eine Beispielmethode, die überprüft, ob eine Tabelle belegt ist. Es ist das erste Mal, dass ich Komponententests mache und lese, dass ein Komponententest Code nur isoliert ist und dass jede Aktion, die auf einer Datenbank ausgeführt wird, mokiert werden sollte, sonst wird es ein Integrationstest. Ich bin mir nicht ganz sicher, wie ich das ausspionieren soll, wenn mir jemand in die richtige Richtung zeigen kann.So stellen Sie eine Methode vor, die eine Verbindung mit einer MS Access-Datenbank herstellt
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;
}
Glauben Sie, dass es sich lohnt, wenn diese Methode nicht mit einer anderen Methode interagiert? Die Rückkehr hindert mich nicht daran, andere Methoden zu testen. Soll ich direkt zum Integrationstest für diese Methode gehen und den Komponententest überspringen? – user5467760
Ich spotte diese Methode nur, indem ich sie in 'bool isTableOccupied (" tableID ") {return true}' ändere. Gibt es einen Punkt? – user5467760
Es hängt sicherlich von jedem einzelnen Szenario ab - es lohnt sich in Ihrem Fall vielleicht nicht, aber es ist generell eine gute Methode, den Datenzugriffscode hinter einer Schnittstelle wegzuzaubern. Der Code wäre in Zukunft für Sie und andere wartbarer und testbarer. Das Beispiel, das ich gab, um wahr zu sein, war nur ein Beispiel. Sie könnten den Mock so einrichten, dass er abhängig von einer bestimmten gelieferten Id verschiedene Werte zurückgibt. Wie gesagt, jedes Szenario ist einzigartig. Ich würde sagen nur testen, ob es Mehrwert bringt und etwas lohnenswertes behauptet, oft kann ein Integrationstest sinnvoller sein. – abrown