我在研究如何测试以及测试什么方面遇到了问题.
我有一个控制器注入UserManager并调用该CreateAsync方法来创建一个新用户.
我不想测试Identity用户管理器,因为它已经经过了彻底的测试.我想做的是测试控制器是否运行正确的路径(在我的情况下,有3条路径,发回响应模型状态错误,身份响应错误或简单字符串)
我是否应该尝试创建用户管理器的模拟以创建我的测试(我不确定如何将用户管理器设置为模拟依赖项)其次,如何设置条件以验证控制器是否采用了给定的路径.
我正在使用xUnit和Moq.
[Route("api/[controller]")]
public class MembershipController : BaseApiController
{
private UserManager<ApplicationUser> _userManager;
public MembershipController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
[HttpGet("RegisterNewUser")]
public HttpResponseMessage RegisterNewUser([FromBody] NewUserRegistration user)
{
if (ModelState.IsValid)
{
ApplicationUser newUser = new ApplicationUser();
newUser.UserName = user.username;
newUser.Email = user.password;
IdentityResult result = _userManager.CreateAsync(newUser, user.password).Result;
if (result.Errors.Count() > 0)
{
var errors = new IdentityResultErrorResponse().returnResponseErrors(result.Errors);
return this.WebApiResponse(errors, HttpStatusCode.BadRequest);
}
}
else
{
var errors = new ViewModelResultErrorResponse().returnResponseErrors(ModelState);
return …Run Code Online (Sandbox Code Playgroud) 我在页面上列出了许多复选框,渲染的html如下:
我需要这些分组复选框才能使用验证,以便至少检查其中一个项目.
<input id="element_frm1167_8_1" name="test" class="element checkbox" type="checkbox" value="1" validate="required:true, minlength:2">
<input id="element_frm1167_8_2" name="test" class="element checkbox" type="checkbox" value="1" >
<input id="element_frm1167_8_3" name="test" class="element checkbox" type="checkbox" value="1" >
Run Code Online (Sandbox Code Playgroud)
我查看了http://jquery.bassistance.de/validate/demo/radio-checkbox-select-demo.html上的一个例子.
但是,当我调用form.Validate()时,我没有得到任何验证.
请有人指出我正确的方向.