2015-02-10 4 views
0

У меня проблема с моим тестом в behat. Таким образом, у меня есть сценарий:Как проверить, находится ли ключ в массиве в Behat

Scenario: Teste la route /settlement/rank/types 
Given I request "http:/localhost/admin" 
Then the response should be JSON 
And I should have code with value 200 
And I should have error with value 0 
And The response has a "aUser" property 
And This property "aUser" is not empty 
And The property "aUser" has the keys: 
      |id_user |login |first_name |last_name |email |id_company |enable |id_language |label_language | 

Сейчас FeatureContext является:

/** 
* @Given /^The property "([^"]*)" has the keys:$/ 
*/ 
public function thePropertyHasTheKeys($aProperty, TableNode $table){ 
    $data = json_decode($this->_response->getBody(true),true); 
    foreach($table as $value){ 
     print_r($value['id_user']); 
     if(!in_array($value,$data['data'][$aProperty])){ 
      throw new Exception("The property ".$value. " is not set\n"); 
     } 
    } 
} 

В $data У меня есть массив с этой формой:

|id_user |login |first_name |last_name |email |id_company |enable |id_language |label_language | 

Так что я хочу, чтобы сравнить массив $data с массивом $table, если ключ тот же.

ответ

1

Что-то вроде этого, возможно?

$data = json_decode($this->_response->getBody(true),true); 
foreach($table as $key=>$value) 
{ 

    if(!isset($data[$key])) { throw new Exception("The key ".$key. " is not set\n"); } 
    if($data[$key]!=$value) { throw new Exception("The value ".$value. " is wrong\n"); } 
} 
+0

Thnx Андрей. ... –

0

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

// outside the test class 
require_once 'PHPUnit/Framework/Assert/Functions.php'; 

// convert $table to a clean array .... 

// compare 
$data = json_decode($this->_response->getBody(true), true); 
assertEquals($table, $data, 'Decoded JSON does not match the given example'); 

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

  • Нет связанных вопросов^_^