有没有人建议如何为这种方法编写单元测试方法?
public virtual void OpenDatabaseConnection(string connectionString)
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
}
}
答案 0 :(得分:1)
单元测试是测试您的代码,而不是第三方的代码。这将是集成测试的一部分。
但是,如果您亲自编写SqlConnection
类,并且想测试它是否正常工作,我建议模拟外部依赖项,然后验证外部依赖项(例如数据库驱动程序)是在执行Open
方法时调用。
关于您示例的另一个注意事项:您展示的方法将打开连接,然后打开Dispose
,因为您周围有using
语句。换句话说,一旦打开就无法使用连接,并且方法本身对外部调用者来说是无操作。
答案 1 :(得分:0)
您可以注入某些类型的连接工厂(例如,Func<IDbConnection>
),使其返回模拟,然后断言在模拟上调用Open()
和Dispose(
)。
当然,所有这些只是有意义的,如果你真的使用连接而不是打开然后处理它,正如rae1在他的回答中正确指出的那样。