我们团队的应用程序开发涉及使用工作量测试工具来模拟我们的实体框架的 DbContext。然而,工作量测试工具似乎需要查看应用程序使用的实际 SQL Server 数据库,以便模拟我们的实体框架的 DbContext,这似乎违反了正确的单元测试原则。
原因是,为了通过模拟与数据库连接相关的任何内容(例如实体框架的 DbContext)来对我们的应用程序代码进行单元测试,我们永远不需要启动并运行数据库。
在没有实际的 SQL Server 数据库启动和运行的情况下,我将如何配置工作量测试工具来模拟实体框架的 DbContext?
*
更新:
@gert-arnold 我们正在使用实体框架模型优先方法来实现后端模型和数据库。
以下摘自测试代码:
connection = Effort.EntityConnectionFactory.CreateTransient("name=NorthwindModel");
jsAudtMppngPrvdr = new BlahBlahAuditMappingProvider();
fctry = new BlahBlahDataContext(jsAudtMppngPrvdr, connection, false);
qryCtxt = new BlahBlahDataContext(connection, false);
audtCtxt = new BlahBlahAuditContext(connection, false);
mockedReptryCtxt = new BlahBlahDataContext(connection, false);
_repository = fctry.CreateRepository<Account>(mockedReptryCtxt, null);
_repositoryAccountRoleMaps = fctry.CreateRepository<AccountRoleMap>(null, _repository);
“name=NorthwindModel”与我们的 edmx 文件相关,其中包含有关数据库表的信息
以及它们的对应关系。
如果我通过像下面的代码行那样建立连接来删除“name=NorthwindModel”,则会收到一条错误消息,指出它需要一个参数:
connection = Effort.EntityConnectionFactory.CreateTransient(); // throws error
您能解释一下上述代码应该如何重写吗?