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

[Решено]Codeception. Обращение к методу другого степа из текущего

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

(Andrey Kurilov) #1

Приветствую! Столкнулся сегодня с проблемой. Хочу использовать функции рабочего steps в новом, чтоб не плодить код, но не пойму как это сделать.
Пытаюсь сделать примерно следующее:

<?php
namespace AcceptanceTester;
    class MembersSteps
    {
    
	public function goToMemberPage($email, $group)
	{

		$I = $this;

		$I = new GroupsSteps($I);
		$I->click(['link' => $email]);

	}

}

На что получаю ошибку

  [PHPUnit_Framework_Exception] Argument 1 passed to Codeception\Actor::__construct() must be an instance of Codeception\Scenario, instance of AcceptanceTester\MembersSteps given, called in /home/kurilov/frontend/autotests/tests/acceptance/_steps/MembersSteps.php on line 12 and defined

Как правильно обращаться к методам из другого степа?


(Ray Romanov) #2

Повторяющиеся (часто используемые) шаги выводятся в хелперы.


(Andrey Kurilov) #3

Тогда хэлперы получатся огромными. Решил проблему немного изменив сам степ и логику построил в самом тесте.


(Metheoryt) #4

Я бы вынес базовые для обоих степов действия в какой-нибудь BasicSteps, и унаследовал MembersSteps и GroupSteps от него.
Подумываю сейчас про использование трейтов для действий, являющихся общими для нескольких субъектов, не связанных между собой наследованием.