单元测试网站 api

unit testing web api

我们目前有一个 Web API(.Net 核心 2.1),它有一个它调用的注入服务。服务基于接口,服务方法执行业务逻辑和 CRUD 工作。

我们正在使用 Entity Framework 与数据库对话,使用服务在其方法中使用的 UnitOfWork 模式。我们如何在不访问数据库的情况下测试这些调用?我看到了 Moq 框架,但我不确定它是如何避免数据库调用的?为了创建我的控制器,我需要传递我的服务,其构造函数采用工作单元,通过 .net 依赖注入完成。

我不确定如何模拟数据部分。 Moq 会自动执行此操作,还是我需要设置假数据然后 Moq 将使用它进行数据库调用?例如,如果我想检查 GET 请求是否 returns 数据。或 post returns 好的。

如果您正在使用依赖注入,您将模拟您正在注入的对象,并在 Moq 的帮助下模拟它(我假设您正在注入实际连接到数据库的对象)。

基本上,您告诉 Moq 应该如何调用一个方法(您设置它)以及它应该做什么 return。然后,当您的业务逻辑尝试从这个模拟对象使用此方法时,实际上是您的模拟对象接听电话而不是数据库。

这是一个很好的快速示例,说明您应该如何使用 Moq

但是,我再次假设您正在注入实际进行调用的对象。我认为你注入的所有对象都需要被模拟,因为你正在测试接收注入的对象而不是被注入的对象......

要使 Moq 真正有用,请确保所有外部依赖项都有自己的 class 并且您正在注入它,这样您的代码就可以轻松测试。