![]() |
1
11
从这个问题上我可以看出,你在试图同时进行太多的测试。保留 Single Responsibility Principle 铭记在心。 当我们进行单元测试时,我们使用抽象存储库从应用程序的其余部分抽象数据访问代码。从这个角度来看,我们只是在测试 消费者 而不是任何具体的知识库。这些消费者应该关心 只有 关于存储库,而不是任何“对象上下文”——这将是 泄漏提取 . 假设您被意外地要求将存储库使用者连接到完全不同的数据层(例如,基于REST的服务)。在这种情况下,即使是抽象对象上下文也没有意义。你可能从来没有想过会发生这种情况,但即便如此,仅凭思想实验就可以很好地指示抽象概念的泄漏。 对象上下文是使用EF的具体存储库实现的实现细节。其他实现可能根本不需要对象上下文。 也就是说,您可能仍然希望测试EF实现本身。这可能很有意义,但这是一个具有完全不同目的的不同单元测试套件。您现在测试的不是抽象存储库的使用者,而是存储库的具体实现。在这种情况下,不需要通过接口——您可以直接在这里与具体类型进行讨论。 |
![]() |
2
0
是否可以使用内存中的数据库(如sqlite)测试实际的存储库?存在实体框架的sqlite提供程序。 似乎EDMX文件中的ssdl部分耦合到了提供程序。如果从SQL Server数据库生成模型,将设置provider=“system.data.sqlclient”。如果从实体模型生成SQL Server数据库,也将设置此选项。 我真正想做的是让我的生产代码使用System.Data.sqlclient提供程序,并让我的单元测试使用System.Data.sqlite提供程序。 |
![]() |
mg610 · 如何开始C++单元测试 2 年前 |
![]() |
vidhu · 无URL的自动化测试 2 年前 |
![]() |
Aessandro · js开关站单元测试[关闭] 6 年前 |
![]() |
AntoineLB · 断言后期工作Django 6 年前 |
|
ravikant · Selenium脚本不工作异常 6 年前 |
![]() |
splintor · 如何在angular中的单元测试中测试文档点击 6 年前 |