【发布时间】:2019-05-16 19:19:03
【问题描述】:
我们目前有一个 Web API (.Net core 2.1),它有一个它调用的注入服务。服务基于接口,服务方法执行业务逻辑和 CRUD 工作。
我们使用实体框架与数据库对话,使用服务在其方法中使用的 UnitOfWork 模式。我们如何在不访问数据库的情况下测试这些调用?我看到了 Moq 框架,但我不确定它如何避免数据库调用?为了创建我的控制器,我需要传递我的服务,其构造函数采用 unitofwork,通过 .net 依赖注入完成。
我不确定如何模拟数据部分。 Moq 会自动执行此操作,还是我需要设置假数据,然后 Moq 将其用于我的数据库调用?例如,如果我想检查 GET 请求是否返回数据。或帖子返回 Ok。
【问题讨论】:
-
我认为单元测试数据访问代码没有意义。您应该对业务逻辑进行单元测试。那里的纯粹主义者可能会不同意,但我认为这是浪费时间。如果您确实想要对数据访问代码进行单元测试并且使用的是 EF 内核,那么您可以使用内存中的功能使其更容易。 docs.microsoft.com/en-us/ef/core/miscellaneous/testing/…
-
我同意 William 关于测试业务逻辑的观点。但是,如果您的服务方法中有逻辑,则需要测试您的数据库命中。尽管如此,不要将单元测试与集成测试混为一谈。您需要模拟测试类的目标类之外的所有内容。所以模拟与其他层相关的所有内容
标签: .net unit-testing asp.net-web-api moq