Фикстуры в api тестах

Всё про тестирование в Yii 2.0
Закрыто
spinik
Сообщения: 15
Зарегистрирован: 2020.11.24, 17:03

Фикстуры в api тестах

Сообщение spinik »

Сейчас, в проекте есть тесты, которые оперируют данными из базы (шаблон yii-basic).
Хочу переписать эти же тесты но чтобы использовались фикстуры.
Но мне неясно несколько моментов:
1)Глобальные фикстуры выполняются перед каждым тестом или нет?
2)Можно ли изменять глобальные фикстуры во время теста? Т.е. есть какой-то набор данных и он общий для всех, но в 1 тесте нужно изменить кусочек этих данных
3)Я прочёл как использовать фикстуры и попытался реализовать это в коде. В api.suite.yml я добавил:

Код: Выделить всё

- Yii2:
            part: [orm, email, fixtures]
            entryScript: index-test.php
            cleanup: false
            configFile: 'tests/codeception/config/api.php'
Создал файл с фикстурой по пути test/codeception/fixtures
Содержимое файла:

Код: Выделить всё

namespace app\tests\fixtures;

use yii\test\ActiveFixture;

class EmployeeFixture {
	
	public $modelClass = 'app\models\Employee';
}
Создал папку data в папке fixtures и положил туда данные.
Создал тест :

Код: Выделить всё

<?php

use app\tests\codeception\api\fixtures\EmployeeFixture;

//use tests\fixtures\EmployeeFixture;

class TestCest {

//	public function _fixtures() {
//		return [
//			'employee' => [
//				'class'		 => EmployeeFixture::className(),
//				'dataFile'	 => codecept_data_dir() . 'employee.php']
//		];
//	}
//	

	public function _before(ApiTester $I) {
		$I->haveFixtures([
			'employee' => [
				'class'		 => EmployeeFixture::className(),
				'dataFile'	 => codecept_data_dir() . 'employee.php']
		]);
	}

	public function tryToTestOne(ApiTester $I) {

		$I->sendPOST('site/login', [
			'LoginForm[username]'	 => $this->employee['LoginUserID'],
			'LoginForm[password]'	 => '123'
		]);
		$I->seeResponseCodeIs(200);
	}

	public function _after(ApiTester $I) {
		
	}

}
Запустил тест и получил ошибку : Call to undefined method app\tests\codeception\fixtures\EmployeeFixture::className() и что я сделал не так я не понял
spinik
Сообщения: 15
Зарегистрирован: 2020.11.24, 17:03

Re: Фикстуры в api тестах

Сообщение spinik »

Долго мучался, но победил. Пример выложу позже.
Есть 1 вопрос как сделать так чтобы текущие данные из таблицы не удалялись?
spinik
Сообщения: 15
Зарегистрирован: 2020.11.24, 17:03

Re: Фикстуры в api тестах

Сообщение spinik »

Тему можно закрывать. Проблема была в namespace и конфигах
Закрыто