【问题标题】:C# Get return object of CreatedAtRouteC# 获取 CreatedAtRoute 的返回对象
【发布时间】:2020-01-27 07:02:13
【问题描述】:

我有一个控制器方法,它返回一个 CreatedAtRoute 对象。如何提取返回的对象?

我的测试类(调用控制器):

[Test]
public void AddUser(){
  AppUser au= new AppUser();
  GreenCardController gc = new GreenCardController();
  ActionResult<AppUser> res = gc.UpdateArgosUser(au); //<-- How can I turn this into an AppUser object?
  //var temp=res.Value; //this didnt have the Object
  Assert.AreEqual(res.FirstName,"")
}

控制器方法:

public ActionResult<AppUser> UpdateArgosUser([FromBody]AppUser au)
{
     return CreatedAtRoute(nameof(GreenCardController.GetArgosUser), new 
                   { userid = au.UserId }, au);
}

当我在调试模式下暂停时,res.Result.Value 似乎是我想要的,但我得到了错误:

ActionResult 不包含“值”的定义

【问题讨论】:

    标签: c# unit-testing asp.net-core nunit


    【解决方案1】:

    从返回的ActionResult&lt;AppUser&gt; 中提取所需的值,转换为已知类型以访问所需的成员。

    由于控制器调用return CreatedAtRoute(...),那么你需要访问ActionResult&lt;TResult&gt;.Result属性来获取控制器返回的ActionResult

    从那里获取对象结果中的存储值对象。

    [Test]
    public void AddUser(){
        //Arrange
        AppUser expected = new AppUser();
        GreenCardController controller = new GreenCardController();
    
        //Act
        ActionResult<AppUser> actionResult = controller.UpdateArgosUser(expected);
        CreatedAtRouteResult result = actionResult.Result as CreatedAtRouteResult;
        AppUser actual = result.Value as AppUser;
    
        //Assert
        Assert.AreEqual(expected, actual);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      相关资源
      最近更新 更多