使用EF Core 2.0时的单元测试

jle*_*man 3 c# unit-testing entity-framework-core asp.net-core asp.net-core-mvc-2.0

对于我在实习中所做的项目,我们必须使用存储库模式.由于该项目已经在使用EF Core,我读到底层实现中已经有了存储库和工作单元.我想我会直接使用EF Core方法而不实现存储库类,因为我想防止混乱.

那么现在我有点问题,当我实现这种方式时,我似乎无法找到有关单元测试的有用信息.该要求是一项艰难的要求,由于该公司的标准,我要求在我的控制器内100%覆盖CRUD功能.我发现了一些微软文档的这里,这里和集成测试使用SQLite,但我似乎仍不能找出单元测试.我做了一些谷歌搜索,除了集成测试我找不到资源.

有没有什么方法可以直接使用EF Core进行单元测试,或者我是否需要制作存储库才能正确地对该程序进行单元测试?

pok*_*oke 5

由于您没有单独的存储库,因此您无需对存储库进行单元测试; 你无法对你没有的东西进行单元测试.

您通常使用EF Core测试的是实际的数据库访问.为此,您可以使用内存数据库临时设置您可以运行完整测试的数据库.当然,这是一个集成测试而不是最小单元测试.

但是你应该考虑这个问题:当你编写单元测试时,你必须真正了解你正在测试的内容.只是说"我需要对组件X进行单元测试"并没有真正意义.通常,它更像是"我需要对组件X的方法U,W,Y进行单元测试".因此,除非您实际拥有需要测试的实际行为的方法,否则尝试为数据库上下文编写单元测试是没有意义的.

你只想对自己编写的东西进行单元测试.如果没有,例如因为您正在使用CRUD的直接数据库上下文功能,那么没有什么可以测试的.EF Core项目已经完成了单元测试,你可能不想在这里开始对第三方代码进行单元测试.