Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何模拟post请求?_C#_Unit Testing_Asp.net Core_Mocking_Moq - Fatal编程技术网

C# 如何模拟post请求?

C# 如何模拟post请求?,c#,unit-testing,asp.net-core,mocking,moq,C#,Unit Testing,Asp.net Core,Mocking,Moq,控制器: private IBeer _beerService; public BeerController(IBeer beerService) { _beerService = beerService; } [HttpPost] public async Task<IActionResult> Post([FromBody]Beer model) { if (!ModelState.IsValid) { return BadRe

控制器:

private IBeer _beerService;

public BeerController(IBeer beerService)
{
    _beerService = beerService;
}

[HttpPost]
public async Task<IActionResult> Post([FromBody]Beer model)
{
     if (!ModelState.IsValid)
     {
          return BadRequest(ModelState);
     }
     var beer = await _beerService.Add(model);
     return Ok(CreatedAtAction("Add Item", new { beer.id }, beer));
}
接口:

public interface IBeer
    {
        Task<Beer> Add(Beer beer);
    }

它给了我一个错误-Generic.list无法转换为Controller.Beer。应该做什么?

如错误描述所述,在设置服务时,您将啤酒列表(
列表
)发送到您的
Add()
方法。您应该改为发送
Beer
类实例(就像在您的界面中)作为如下所示的参数

// Update your request object without List 
var expected = new  Beer()  
    {
        id=2,
        beer="Kingfisher",
        cost=170
     };
此外,请按如下所示更新设置功能

serviceMock.Setup(x => x.Add(expected)).Returns(() => Task.FromResult(expected));

最后,您需要从控制器中的
controller.Post()
方法获取结果,而不是从
controller.get(2)
。希望这对您有所帮助。

添加
需要一杯
啤酒
,但您正在尝试添加
列表
<代码>预期
在这种情况下应该是
var预期=新啤酒{id=2,Beer=“Kingfisher”,cost=170}
Ok(CreateDataAction(…
是错误的。它是一个或另一个。也不要为控制器编写这样的测试,而是使用TestHost和集成测试,该测试将利用所有MVC,包括路由和模型绑定和验证。感谢您的帮助!
x => x.Add(expected) 
// Update your request object without List 
var expected = new  Beer()  
    {
        id=2,
        beer="Kingfisher",
        cost=170
     };
serviceMock.Setup(x => x.Add(expected)).Returns(() => Task.FromResult(expected));