0

我有一个从 DbContext 继承的类,实现了代码优先的实体框架对象。

我想要一个单元测试来在这个 dbcontext 中练习模型构建器——这对于检测“实体上未定义键”错误之类的东西很有用。

但是在单元测试期间我可能没有可用的实际数据库。有没有办法在不实际尝试与上下文建立数据库连接的情况下练习此代码。我尝试了一些无害的东西,例如:

var ctx = new MyDbContext("Data Source=(local);Initial Catalog=Dummy;<.......>");
var foo = ctx.GetValidationErrors();  //triggers DBModelBuilder, should throw if my DBModel is goofed up

这在技术上确实有效。但是,这需要很长时间才能运行——如果我暂停并检查调用堆栈,它将触发对 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin 的调用

最终它超时,吞下连接错误并完成我的测试。

有没有办法在没有连接尝试的情况下做到这一点?

4

1 回答 1

0

这里的解决方案是解决问题并使用尽可能低的连接超时。我正在使用这个连接字符串:

服务器=本地主机;数据库=临时数据库;集成安全=true;连接超时=1;ConnectRetryCount=0

它仍然会触发问题,但是有一秒钟的超时并且没有自动重试(仅针对系统中的这一项测试),这是完全可以接受的。

如果开发人员安装了本地数据库,它会意外地运行得更快。

于 2015-02-05T20:27:28.487 回答