第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我如何在核心 Web api 中測(cè)試我的數(shù)據(jù)注釋字段?

我如何在核心 Web api 中測(cè)試我的數(shù)據(jù)注釋字段?

C#
臨摹微笑 2023-09-24 11:40:23
我嘗試為我的 API 控制器方法創(chuàng)建測(cè)試。簡(jiǎn)單來(lái)說(shuō),我寫了add方法。    [HttpPost]    [AllowAnonymous]    public async Task<IActionResult> AddAsync([FromBody]BaseUserDTO dto)    {        if (ModelState.IsValid)        {            return Ok();        }        else        {            return ValidationProblem();        }    }在 dto 模型中我有public class BaseUserDTO{    [Required(ErrorMessage = "This field should be filled in", AllowEmptyStrings = false)]    [RegularExpression(@"(^[a-zA-Z0-9_ -]+$)", ErrorMessage = ("Use only Latin characters"))]    public string FirstName { get; set; }    [Required(ErrorMessage = "This field should be filled in", AllowEmptyStrings = false)]    [RegularExpression(@"(^[a-zA-Z0-9_ -]+$)", ErrorMessage = ("Use only Latin characters"))]    public string LastName { get; set; } }我寫了第一個(gè)嘗試測(cè)試數(shù)據(jù)注釋[Fact]public async Task UserValidationError()    {        //Arrange        BaseUserDTO userDTO = new BaseUserDTO        {            FirstName = "222A@@@",            LastName = "Test",            Email = "Test@test.com",            PhoneNumber = "(111)111-1111",            Role = 0,            Password = "1234567A",            RetypePassword = "1234567A"        };        UserController controller = new UserController(userServicesMock.Object, mapperMock.Object, loggerMock.Object);        //Act        IActionResult result = await controller.AddAsync(userDTO);        //Assert        Assert.IsType<BadRequestObjectResult>(result);    }但模型狀態(tài)總是正確的,我不明白為什么會(huì)發(fā)生???我的第二次嘗試在啟動(dòng)時(shí)在 mongo 連接中獲取 NullReference startup(在正常情況下它工作良好(當(dāng)應(yīng)用程序工作時(shí)),由郵遞員檢查)[Fact]public async Task UserValidationError(string userState)    {        //Arrange        BaseUserDTO userDTO = new BaseUserDTO        {            FirstName = "222A@@@",            LastName = "Test",            Email = "Test@test.com",            PhoneNumber = "(111)111-1111",            Role = 0,            Password = "1234567A",            RetypePassword = "1234567A"        };    }通常如何創(chuàng)建單元測(cè)試來(lái)檢查DataAnnotation驗(yàn)證?或者如何正確檢查此驗(yàn)證?
查看完整描述

1 回答

?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

using System.ComponentModel.DataAnnotations;

/*other using*/


[Fact]

public void UserValidationError()

{

? ? //Arrange

? ? BaseUserDTO userDTO = new BaseUserDTO

? ? {

? ? ? ?FirstName = "222A@@@",

? ? ? ?LastName = "Test",

? ? ? ?Email = "Test@test.com",

? ? ? ?PhoneNumber = "(111)111-1111",

? ? ? ?Role = 0,

? ? ? ?Password = "1234567A",

? ? ? ?RetypePassword = "1234567A"

? ? };


? ? //ACT

? ? var lstErrors = ValidateModel(userDTO);


? ? //ASSERT

? ? Assert.IsTrue(lstErrors.Count == 1);? ?

? ? //Or?

? ? Assert.IsTrue(lstErrors.Where(x => x.ErrorMessage.Contains("Use only Latin characters")).Count() > 0);

}


//http://stackoverflow.com/questions/2167811/unit-testing-asp-net-dataannotations-validation

? ? ? ? private IList<ValidationResult> ValidateModel(object model)

? ? ? ? {

? ? ? ? ? ? var validationResults = new List<ValidationResult>();

? ? ? ? ? ? var ctx = new ValidationContext(model, null, null);

? ? ? ? ? ? Validator.TryValidateObject(model, ctx, validationResults, true);

? ? ? ? ? ? return validationResults;

? ? ? ? }

查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 1 回答
  • 0 關(guān)注
  • 151 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)