public List<int> GetPortfolioList()
{
using (var connection = new SqlConnection("<connectionString>"))
using (var command = new SqlCommand("SELECT * FROM Portfolio", connection))
{
connection.Open();
var portfolioTable = SqlHelper.GetDataTable(command);
var portfolios = from DataRow row
in portfolioTable.Rows
select int.Parse(row["Portfolio"].ToString());
return portfolios.ToList();
}
}
Verwenden Sie diese Methode in einem SQL DAL-Provider, um eine Liste von Portfolios abzurufen, wie der Name (und der Code) vermuten lassen. Da die Datenbanktabelle für Integrationstests eine recht statische Datenmenge enthält, können wir gegen mehrere Erwartungen sprechen. z.B. Die Liste der Portfolios werden: - nicht leer sein - enthält bestimmte bekannte Werte - enthalten keine DuplikateWürde ein Komponententest diesem Beispiel eines DAL-Anbieters über einen Integrationstest hinaus einen Wert hinzufügen?
ein Peer-Review-Folgen, bestand darauf, jemand, dass dieser Code nicht richtig (isoliert) getestet, weil es stützt sich auf Datenbankzugriff. Wenn der größte Teil des Werts darin besteht, sicherzustellen, dass diese Methode Daten aus einer Datenbank zurückgibt, deren Status garantiert ist, konnte ich den Wert beim Mocking des Datenbankaufrufs nicht sehen, um einen Komponententest für diese Methode zu schreiben . Fehle ich etwas?
Keines dieser Dinge würde jedoch sein Code testen. In einem testen Sie die Linq-Implementierung, in der anderen testen Sie den db-Code. – heisenberg
@kekekela - nein, du würdest testen, dass sein _use_ von linq wie erwartet ist, d. H. Dass er es richtig macht. – Oded