#php #phpunit #codeigniter-4
Вопрос:
Мне нужна ваша помощь, пожалуйста, я все еще изучаю codeigniter 4 и пытаюсь создать приложение, я обнаружил здесь проблему, когда я создавал тестирование в своей базе данных и модели и показывал вот так, когда я запускал тест
> phpdbg -qrr .vendorbinphpunit
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
W 1 / 1 (100%)
Time: 00:00.094, Memory: 10.00 MB
There was 1 warning:
1) Warning
No tests found in class "TestsSupportUserDatabaseTest".
WARNINGS!
Tests: 1, Assertions: 0, Warnings: 1.
Generating code coverage report in Clover XML format ... done [00:00.179]
Generating code coverage report in HTML format ... done [00:00.663]
Generating code coverage report in PHP format ... done [00:00.017]
Code Coverage Report:
2021-04-05 09:17:15
Summary:
Classes: 0.00% (0/4)
Methods: 0.00% (0/4)
Lines: 0.00% (0/19)
мой тест-это только один тест, тест для проверки данных, мой тест базы данных пользователей и мягкое удаление, подобное этому
UserDatabaseTest
namespace TestsSupport;
use TestsSupportDatabaseDatabaseTest;
use CodeIgniterTestCIDatabaseTestCase;
class UserDatabaseTest extends CIDatabaseTestCase
{
protected $migrate = true;
protected $refresh = true;
protected $seed = "UserSeeder";
public function setUp(): void
{
parent::setUp();
}
public function tearDown(): void
{
parent::tearDown();
}
public function userFindAllTest()
{
$model = model('UserModel');
$objects = $model->findAll();
$this->assertCount(30, $objects);
}
public function UserSoftDeleteTests()
{
$model = model('UserModel');
$object = $model->first();
$model->delete($object->id);
$this->assertNull($model->find($object->id));
$criteria = ['id' => $object->id, 'deleted_at' => null];
$this->dontSeeInDatabase('users', $criteria);
$criteria = ['deleted_at' => null];
$this->seeNumRecords(29, 'users', $criteria);
}
}
я понятия не имею о проблеме и о том, как ее решить, спасибо за вашу помощь раньше.
полный проект на github
Ответ №1:
Все методы тестирования должны начинаться с «test». Таким образом, userFindAllTest изменится на testUserFindAllTest, а UserSoftDeleteTests изменится на testUserSoftDeleteTests. Кроме того, наилучшей практикой для метода проверки именования является использование строчных и отдельных слов с подчеркиванием. Следовательно, testUserFindAllTest должен быть test_user_find_all (удаление теста в конце, поскольку это подразумевается).
Комментарии:
1. О, большое спасибо, теперь этот тест работает, спасибо, сэр
2. Рад вам помочь 🙂