我们目前有一个 Web API(.Net core 2.1),它注入了一个服务并调用它。服务基于接口,服务方法执行业务逻辑和 CRUD 工作。
我们正在使用实体框架与数据库对话,使用服务在其方法中使用的 UnitOfWork 模式。我们如何在不影响数据库的情况下测试这些调用?我看到了 Moq 框架,但我不确定它是如何避免 db 调用的?为了创建我的控制器,我需要传递我的服务,其构造函数采用工作单元,通过 .net 依赖注入完成。
我不确定如何模拟数据部分。Moq 会自动执行此操作,还是我需要设置假数据,然后 Moq 会将其用于我的 db 调用?例如,如果我想检查 GET 请求是否返回数据。或帖子返回 Ok。
如果您使用依赖注入,您将模拟您正在注入的对象,并在 Moq 的帮助下模拟它(我假设您正在注入实际连接到数据库的对象)。
基本上,你告诉 Moq 一个方法应该如何被调用(你设置它)以及它应该返回什么。然后,当您的业务逻辑尝试从这个模拟对象使用此方法时,实际上是您的模拟对象在应答调用而不是数据库。
这是关于如何使用Moq 的一个很好的快速示例
但同样,我假设您正在注入实际进行调用的对象。我认为您注入的所有对象都需要模拟,因为您正在测试接收注入的对象而不是注入的对象......
为了让 Moq 真正有用,请确保所有外部依赖项都有自己的类并且您正在注入它,以便让您的代码易于测试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句