Как перебрать несколько дочерних узлов с одинаковым именем в ответе json, используя C #, и отстаивать правильное содержимое - PullRequest
0 голосов
/ 13 мая 2018

Я получаю ответ ниже веб-службы. Я хочу написать тест для этого, используя specflow и C # Nunit framework

{
   "status": "Healthy",
   "results":    [
            {
              "name": "Microservice one",
              "status": "Healthy",
              "description": "Url check MSOneURI success : status(OK)"
            },
            {
              "name": "Microservice two",
              "status": "Healthy",
              "description": "Url check MSTwoURI success : status(OK)"
            },
            {
              "name": "Microservice three",
              "status": "Healthy",
              "description": "Url check MSThreeURI success : status(OK)"
              },
            {
              "name": "Microservice four",
              "status": "Healthy",
              "description": "Url check MSFourURI success : status(OK)"
              },
            {
              "name": "Microservice five",
              "status": "Healthy",
              "description": "Url check MSFiveURI success : status(OK)"
              }
                ]

}

Вот так выглядит мой файл функций

@uService
Feature: Micro Service - health check
In order to perform health check 
As a service
I want to ensure downstream Micro Services are healthy 

Scenario Outline: [uService] Status of downstream microservices are healthy
Given health check micro service
When health check is performed      
Then <nameoftheservice> service returns correct description and status


Examples: 
| downstreamservice   | 
| Microservice one    | 
| Microservice two    | 
| Microservice three  | 
| Microservice four   | 
| Microservice five   | 

Мне нужна помощь в написании метода привязки для шага Тогда.

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете десериализовать JSON с помощью пакета Newtonsoft.JSON, а затем выполнить итерацию по списку сервисов с помощью LINQ, чтобы выполнить сравнение.

Что-то вроде:

class MicroserviceStatus {
   public string Name { get; set; }
   public string Status { get; set; }
   public string Description { get; set; }
}

class MicroserviceHealthCheck {
   public string Status { get; set; }
   public List<MicroserviceStatus> MicroserviceStatuses { get; set; }
}

var microserviceHealthCheck = JsonConvert.DeserializeObject<MicroserviceHealthCheck>(json);

bool anyNotHealthy = microserviceHealthCheck.MicroserviceStatuses.Any(i => i.Status != "Healthy");

Я написал это прямо в редакторе, так что это может быть не совсем правильно, и у вас уже должны быть типы, доступные для десериализации, но, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...