как использовать провайдеры данных с аннотацией @after в кодировании - PullRequest
0 голосов
/ 13 марта 2020

У меня проблема. У меня есть черта с провайдером данных:

trait testingData{
 protected function dataProvider(){
  return[['example' => 1],
  ['example' => 2];
 }

  protected function testData(MyTester $I, Example $e){
   $I->testData($e['example'];
 }

}

У меня много таких черт.

Тогда у меня есть один большой класс, который объединяет эти черты

class Importer{

use "namespace of testingData trait";



//setters, getters, some parameters...


use testingData;


/**
* @dataProvider dataProvider
*/
public startTest(MyTester $I, Example $e){
 $this->testData($I,$e);

}


/**
* @dataProvider anotherDataProvider
*/
public startAnotherTest(MyTester $I, Example $e){
 $this->testAnotherData($I,$e);

}

}

И теперь в моем тесте я пытаюсь вызвать эти два теста с аннотацией @after, test расширяет класс импортера, поэтому он выглядит следующим образом:

class test extends Importer{

/**
* @after startTest
* @after startAnotherTest
*/
public function prepareForm(FormTester $I, Example $e){
 $I->amOnPage("/somewhere");
...
}

}

Итак, в чем проблема?

Я должен описать вам шаги теста:

  1. start prepareForm - нормально
  2. start @after startTest - первая строка
  3. fail потому что он начался @after startAnotherTest и он использует другой dataProvider с разными data и dataKeys

Какие шаги мне нужны:

  1. start prepareForm - ok
  2. start @after startTest - первая строка
  3. start @after startTest - вторая строка
  4. start @after startAnotherTest - первая строка (другой поставщик данных) ...

Что я попробовал?

Я попробовал в классе Importer в конструкторе создания e $ this-> myDataProvider = new Example (dataProvider); и отправьте в метод testData ($ I, $ this-> myDataProvider [0]). Но здесь я могу использовать только одну указанную c строку dataProvider.

Это вообще возможно?

спасибо за ответы

...