小编Kev*_*rim的帖子

使用UserManager的ASP.NET 5单元测试控制器

我开始使用ASP.NET 5(vNext),现在我正在尝试对使用UserManager注册和登录用户的控制器进行单元测试.

我正在使用xUnitmoq.netcore.

在我的UnitTest中,我有:

var mockStore = new Mock<IUserStore<ApplicationUser>>(MockBehavior.Strict).As<IUserPasswordStore<ApplicationUser>>();

mockStore.Setup(x => x.CreateAsync(It.IsAny<ApplicationUser>(), CancellationToken.None)).Returns(Task.FromResult(new IdentityResult()));

var userManager = new UserManager<ApplicationUser>(mockStore.Object, null, null, null, null, null, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

和控制器中的代码:

var result = await _securityManager.CreateAsync(user, model.Password);
Run Code Online (Sandbox Code Playgroud)

但是,当我运行单元测试时,我在调用CreateAsync时得到一个null异常.

我不明白为什么我不能用ApplicationUser和字符串参数模拟CreateAsync方法,我必须使用CancellationToken来模拟它.

这是我的第一个使用ASP.NET 5的项目,之前我使用的是ASP.NET 4.6,所以现在很多东西都不同了.

并且,您认为我应该已经在ASP.NET 5中开发了一个重要的项目,还是应该等待并为ASP.NET 4.6开发它?

c# asp.net unit-testing moq

5
推荐指数
1
解决办法
2566
查看次数

标签 统计

asp.net ×1

c# ×1

moq ×1

unit-testing ×1