C # Получить возвращаемый объект CreatedAtRoute - PullRequest
1 голос
/ 27 сентября 2019

У меня есть метод контроллера, который возвращает объект 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 не содержит определения для 'Value'

1 Ответ

0 голосов
/ 27 сентября 2019

Извлечение нужных значений из возвращенного значения ActionResult<AppUser>, приведение к известным типам для получения доступа к нужным элементам.

Поскольку контроллер вызывает return CreatedAtRoute(...), то вам необходимо получить доступ к ActionResult<TResult>.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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...