我们团队的应用程序开发涉及使用努力测试工具来模拟我们的实体框架的 DbContext。但是,似乎 Effort Testing Tool 需要查看应用程序使用的实际 SQL Server 数据库,以便模拟我们的实体框架的 DbContext,这似乎违反了正确的单元测试原则。
原因是为了通过模拟与数据库连接相关的任何东西(例如实体框架的 DbContext)来对我们的应用程序代码进行单元测试,我们永远不需要数据库来启动和运行。
在没有实际 SQL Server 数据库启动和运行的情况下,我将如何配置 Effort Testing Tool 来模拟 Entity Framework 的 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
你能解释一下上述代码应该如何重写吗?