Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

return a resulted value (back to the cest file) from a helper method call

codeception
Теги: #<Tag:0x00007f7b697b8900>

(Okovalov) #1

Привет ребята.

Такой вопрос.

Скажем есть test_case_cest.php и в нем

public function testCase(ApiTester $I, Scenario $scenario) {
  $I = new ApiTester\ApiKeySteps($scenario);
  $I->seeTwoArraysEqual($expected, $response);
}

в хелпере у меня метод

public function seeTwoArraysEqual($expected, $response) {
  .. сравнение двух массивов и сохранение результата в $responseAndExpectedAreEqual .. 
  codecept_debug("bla");
   $this->assertTrue($responseAndExpectedAreEqual);
}

вопрос - можно ли как - то вернуть что то из seeTwoArraysEqual ?
скажем какой-то текст message (то что в codecept_debug пишу например) ?

чтобы cest выглядел как нибудь так

public function testCase(ApiTester $I, Scenario $scenario) {
  $I = new ApiTester\ApiKeySteps($scenario);
  $messages = $I->seeTwoArraysEqual($expected, $response);
}

тогда, теоритически, я смогу добавить в хелпер dummy method - что то типа

public function seeMessages($string)
{
   codecept_debug($string);
   return true;
}

добавить с одной только целью - чтобы эта строка was passed как аргумент в другом методе cest файла, и , что самое важно - была выведена в output

т.е. чтобы было что то типа

public function testCase(ApiTester $I, Scenario $scenario) {
  $I = new ApiTester\ApiKeySteps($scenario);
  $messages = $I->seeTwoArraysEqual($expected, $response);
  $I->seeMessages($messages);
}

тогда в output я увижу

I see Two Arrays  Equal {'a':1234 },{'a', 123}
I see Messages "'a' in first array is not equal to 'a' in second array"

надеюсь более менее понятно мысль донес…
спасибо!


(Ray Romanov) #2

через return(); и возвращай!


(Okovalov) #3

да. получилось. проблема того, что раньше не возвращалось была в том, что был выход из функции ранее. спасибо!


(Michael Bodnarchuk) #4
public function testCase(ApiTester $I, Scenario $scenario) {
     $I = new ApiTester\ApiKeySteps($scenario);

начная с 2.1 можно писать так

public function testCase(\ApiTester\ApiKeySteps $I) {