Asp.Net Core WebApi:创建单元测试

我有一个 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 类的实例?


慕尼黑的夜晚无繁华
浏览 332回答 1
1回答

慕容708150

我通常不会为控制器创建单元测试,因为我们需要模拟很多东西,这是一项艰巨的工作。如果您认为您的控制器仅调用另一段代码,例如应用程序服务或命令处理程序,您可以使用集成测试覆盖您的控制器,并为您的命令处理程序或应用程序服务或您拥有业务逻辑的任何层创建单元测试.但也许如果你真的想为你的控制器创建一个单元测试,你将需要使用像 Moq 这样的框架在控制器中创建你需要的所有依赖项的模拟。我希望这会有所帮助:D
打开App,查看更多内容
随时随地看视频慕课网APP