gpt4 book ai didi

c# - EF Core、EF 6 和不同的测试方法

转载 作者:行者123 更新时间:2023-12-02 05:10:52 28 4
gpt4 key购买 nike

目前,我正在重构我的上下文方法的测试,以不再需要真正的数据库。我使用 Ef Core。

所以我通读了 Microsoft 文档如何测试上下文方法。我首先找到了 EF6 测试的文档,然后阅读了 EfCore 的文档。

以下是链接:

我发现有趣的是 EF6 和 EF Core 有不同的最佳实践。

对于 EF6,Microsoft 建议使用带有 Moq 的模拟上下文或编写自己的测试替身。所以两次都在 mock 上下文。

对于 EF Core,Microsoft 建议使用 Sqlite 或内置的 InMemory 数据库。

用 Moq 模拟上下文对我来说似乎相当合理。我只是想测试这些方法的功能。无论如何,之后我必须进行集成测试。为什么 EF Core 不再采用推荐的方式?更一般地说,不同方法的优点或问题是什么?

最佳答案

仔细看看同一篇文章中的以下引用...

SQLite in-memory mode allows you to write efficient tests against a provider that behaves like a relational database.

这为您提供了恒定且不变的测试数据,还为您提供了关系数据库问题和行为。它更接近实际的现实生活场景。

另一方面,模拟为您提供了一种实现,您可以在其中更改与任何其他模型的关系,因此它更加通用。

由于 EF 用于 db 并且您正在对 EF 进行测试,因此使用第一个选项非常有意义。通常,您甚至不需要测试诸如基因存储库之类的琐碎操作

确保在更高级别(消耗存储库等的类)上进行测试时使用模拟,因为您想要模拟没有也不应该与具体实现有任何耦合的接口(interface)。

关于c# - EF Core、EF 6 和不同的测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59424219/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com