我有一个AccountController类,这里是ctor:
public AccountController(
UserManager<User> userManager,
SignInManager<User> signInManager,
RoleService roleService,
IConfiguration configuration)
{
_userManager = userManager;
_signInManager = signInManager;
_roleService = roleService;
_configuration = configuration;
}
RoleService 这是我自己的课程。
我创建了一个xUnit Test项目并使用Entity Framework Core来避免模拟和伪造数据库。我使用 UseInMemoryData 方法:
var options = new DbContextOptionsBuilder<ApplicationDbContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new ApplicationDbContext(options);
但我不明白我如何测试AccountController,女巫注入UserManager<User>, SignInManager<User>
等等。我如何创建AccountController类的实例?
答案 0 :(得分:2)
我通常不会为控制器创建单元测试,因为我们需要模拟很多东西,这是一项艰苦的工作。
如果您认为您的控制器只调用另一段代码(例如Application Service或Command Handler),您可以使用集成测试覆盖您的控制器,并为您的命令处理程序或应用程序服务或您拥有的任何层创建单元测试你的业务逻辑。
但是,如果您真的想要为控制器创建单元测试,则需要使用Moq等框架在控制器中创建所需的所有依赖项的模拟。
我希望这有帮助:D