Codeception error Class not found

Good afternoon!

Learning Yii2 of books "Web Application Development with Yii 2".

Skills problem with "Codeception".

What I’ve done:

  1. $ php composer.phar require "codeception/codeception:*"

  2. Settings


config:

	PhpBrowser:

		url: 'url_site'

  1. $ php composer.phar require "fzaninotto/faker:*"

  2. $ cept generate:cept acceptance QueryCustomerByPhoneNumber


<?php

$I = new \AcceptanceTester\CRMOperatorSteps($scenario);

$I->wantTo('add two different customers to database');


$I->amInAddCustomerUi();

$first_customer = $I->imagineCustomer();

$I->fillCustomerDataForm($first_customer);

$I->submitCustomerDataForm();


$I->seeIAmInListCustomersUi();


$I->amInAddCustomerUi();

$second_customer = $I->imagineCustomer();

$I->fillCustomerDataForm($second_customer);

$I->submitCustomerDataForm();


$I->seeIAmInListCustomersUi();


$I = new \AcceptanceTester\CRMUserSteps($scenario);

$I->wantTo('query the customer info using his phone number');


$I->amInQueryCustomerUi();

$I->fillInPhoneFieldWithDataForm($first_customer);

$I->clickSearchButton();


$I->seeIAmInListCustomersUi();

$I->seeCustomerInList($first_customer);

$I->dontSeeCustomerInList($second_customer);



  1. $ cept generate:stepobject acceptance CRMOperatorSteps

<?php

namespace Step\Acceptance;


class CRMOperatorSteps extends \AcceptanceTester

{

	public function amInAddCustomerUi()

	{

		$I = $this;

		$I->amOnPage('/customers/add');

	}


	public function imagineCustomer()

	{

		$faker = \Faker\Factory::create();

		return [

			'CustomerRecord[name]' => $faker->name,

			'CustomerRecord[birth_date]' => $faker->date('Y-m-d'),

			'CustomerRecord[notes]' => $faker->sentence( 8 ),

			'PhoneRecord[number]' => $faker->phoneNumber

		];

	}


	public function fillCustomerDataForm($fieldData)

	{

		$I = $this;

		foreach ($fieldData as $key => $value) {

			$I->fillField($key, $value);

		}

	}


	public function submitCustomerDataForm()

	{

		$I = $this;

		$I->click('Submit');

	}


	public function seeIAmInListCustomersUi()

	{

		$I = $this;

		$I->seeCurrentUrlMatches('/customers/');

	}


	public function amInListCustomersUi()

	{

		$I = $this;

		$I->amOnPage('/customers/');

	}

}

  1. $ cept generate:stepobject acceptance CRMUserSteps

<?php

namespace Step\Acceptance;


class CRMUserSteps extends \AcceptanceTester

{

	public function amInQueryCustomerUi()

	{

		$I = $this;

		$I->amOnPage('/customers/query');

	}


	public function fillInPhoneFieldWithDataFrom($customer_data)

	{

		$I = $this;

		$I->fillField('PhoneRecord[number]', $customer_data['PhoneRecord[number]']);

	}


	public function clickSearchButton()

	{

		$I = $this;

		$I->click('Search');

	}


	public function seeIAmInListCustomersUi()

	{

		$I = $this;

		$->seeCurrentUrlMatches('/customers/');

	}


	public function seeCustomerInList($customer_data)

	{

		$I = $this;

		$I->see($customer_data['CustomerRecord[name]'], '#search_results');

	}


	public function dontSeeCustomerInList($customer_data)

	{

		$I = $this;

		$I->dontSee($customer_date['CustomerRecord[name]'], '#search_results');

	}

}

  1. $ cept build

  2. $ cept run

Error:


Acceptance Tests (2) --------------------------------------------------------------------------------------------------------------------

Trying to add two different customers to database (QueryCustomerByPhoneNumberCept)... PHP Fatal error:  Class 'AcceptanceTester\CRMOperatorSteps' not found in /home/m/magvan/crmapp/tests/acceptance/QueryCustomerByPhoneNumberCept.php on line 2


FATAL ERROR. TESTS NOT FINISHED.

Class 'AcceptanceTester\CRMOperatorSteps' not found

in /home/m/magvan/crmapp/tests/acceptance/QueryCustomerByPhoneNumberCept.php:2

Help me please =)

I solved the problem. Add to file QueryCustomerByPhoneNumberCept.php

the following code


use Step\Acceptance\CRMOperatorSteps;

use Step\Acceptance\CRMUserSteps;

I have the same problem.

Your proposed solution does not work here. :(

Instead use

use Step\Acceptance\CRMOperatorSteps as OperatorTest;

use Step\Acceptance\CRMUserSteps as UserTest;

then change to

$I = new OperatorTest($scenario);

and

$I = new UserTest($scenario);

That worked for me. (based on Codeception documenation "Reusing Test Code")

It’s work for me.

Thanks dholzgang