我正在使用Respawn清理测试数据库,但是当该方法执行时:
public static Task ResetCheckpoint() => Checkpoint.Reset(ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString);
显示此错误消息:
消息:System.InvalidOperationException:无效的操作。连接已关闭。
我已经检查了ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString
返回的值,它是正确的。
我通过Jimmy Bogard:https://github.com/jbogard/ContosoUniversityDotNetCore-Pages(更具体地说,这两个类)在此示例项目中建立了集成测试结构:
答案 0 :(得分:2)
我已经弄清楚了。问题是连接超时。我正在使用生产数据库中的克隆作为测试数据库,并且有很多表具有很多行,有些表具有数百万个寄存器。因此,我在SQL Server Management Studio中手动运行了由Respawn生成的命令,花了17分钟才将其全部清除。现在,我将能够使用干净的数据库编写和运行测试,而不会出现问题。
因此,这里学到的教训是:
Reset
之前清除大型数据库,或将CommandTimeout
类的Checkout
属性设置为较高的值。我认为Respawn可以返回有关Reset
中出了什么问题的更好的消息,也许我会发送拉取请求来解决此问题。