2015-05-29 1 views
0

Я не могу понять, как создать код с помощью hamcrest, чтобы проверить массив внутри массива, имеющего эти свойства.Обработка массивов с помощью hamcrest и остальное завершена

(Представьте себе, как это имеет несколько записей с разными данными)

{ 
     "mobilenum": "+6519829340", 
     "firstname": "Allen", 
     "lastname": "Edwards", 
     "location": "Singapore" 
    } 

Если я использую это:

.body("smsentries.mobilenum", contains(equalTo("+6519829340"))); 

возвращает, что она действительно существует, но как я могу положить больше проверяет, что объект, который он нашел, также имеет то же имя, фамилию и местоположение?

Я также думаю, что это неправильно:

.body("smsentries.mobilenum", contains(equalTo("+6519829340"))) 
     .and() 
.body("smsentries.firstname", contains(equalTo("Allen")); 

Как я понимаю, в том, что он ищет в массив, если массив содержит mobilenum равный тому, что при условии, если массив содержит имя «Аллен»

Мне нужно было найти массив, имеющий мобиленум, равный «+6519829340» и имеющий первое имя, равное «Allen».

Есть ли у вас, парни и девочки, какие-нибудь идеи, как это сделать?

ответ

2

Что мне нужно, чтобы найти массив, имеющий mobilenum равную «+6519829340» и имеющий ПгвЬЫате equalto «Аллен».

Вы можете использовать «найти» метод:

.body("smsentries.find { it.mobilenum == '+6519829340' }.firstname", equalTo("Allen") 
.body("smsentries.find { it.mobilenum == '+6519829340' }.lastname", equalTo("Edwards"). 

Как вы видите, вы, по сути дублирует выражение пути в обоих случаях так, чтобы улучшить это, мы можем использовать root paths:

.root("smsentries.find { it.mobilenum == '+6519829340' }").  
.body("firstname", equalTo("Allen") 
.body("lastname", equalTo("Edwards"). 

Вы также можете параметризовать корневые пути:

.root("smsentries.find { it.mobilenum == '%s' }").  
.body("firstname", withArgs("+6519829340"), equalTo("Allen") 
.body("lastname", withArgs("+6519829340"), equalTo("Edwards"). 
.body("firstname", withArgs("+12345678"), equalTo("John") 
.body("lastname", withArgs("+12345678"), equalTo("Doe"). 
+0

Привет, Йохан! HTHank вас! Но у меня есть еще одна проблема. Каким будет синтаксис, если первое имя равно xand, имя равно y, тогда число должно быть z. Другой пример из приведенных выше данных имеет те же данные, кроме поля. Как объединить условия? –

+0

Я думаю, вы должны создать для него новый вопрос и отметить это как ответ. Я также могу ответить на новые вопросы, если оставить комментарий (со ссылкой на новый вопрос) здесь. – Johan

+0

Думаю, ты прав. Вот новая ссылка для моего вопроса: http://stackoverflow.com/questions/30706158/json-arrays-with-duplicate-items-with-hamcrest-and-restassured Спасибо! –

Смежные вопросы