【发布时间】:2011-01-07 18:02:28
【问题描述】:
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();
}
}
正如名称(和代码)所暗示的那样,在 SQL DAL 提供程序中使用此方法来检索投资组合列表。因为用于集成测试的数据库表包含一组相当静态的数据,所以我们可以针对多个期望进行断言。例如投资组合列表将: - 不能为空 - 包含某些已知值 - 不包含重复项
在同行评审之后,有人坚持认为该代码没有经过适当的测试(孤立地),因为它依赖于数据库访问。如果在确保此方法从状态得到保证的数据库中返回数据中找到了大部分价值,我一直无法看到模拟数据库调用以为此方法编写单元测试的价值.我错过了什么吗?
【问题讨论】:
标签: c# unit-testing tdd integration-testing