adt / presenter-test-coverage
演示者测试覆盖率
v2.0.2
2024-05-12 11:32 UTC
Requires
- nette/di: ^3.0
- nette/robot-loader: ^3.0 | ^4.0
- nette/schema: ^1.2.2
- nette/utils: ^3.0 | ^4.0
- symfony/console: ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
This package is auto-updated.
Last update: 2024-09-12 12:11:06 UTC
README
命令 pro Nette,它确保程序员不会忘记为新创建的演示者、网格、表单和其他组件添加接受测试。它还可以监视演示者新添加的操作和网格或表单中新添加的 render* 方法中缺少的测试。
通常,命令在 CI 中的接受测试之前(例如,通过 Codeception)或在推送至仓库之前启动。目的是让程序员及时了解到缺少什么,需要创建测试。
配置允许对其他组件以及非 Codeception 框架进行自定义。
1 将安装到应用程序中
Composer
composer require --dev adt/presenter-test-coverage
1.1 注册扩展
# app/config/config.neon
extensions:
componentTestCoverage: ADT\PresenterTestCoverage\DI\ComponentTestCoverageExtension
1.2 设置
# app/config/config.neon
componentTestCoverage:
tempDir: %appDir%/../temp
# Složka s akceptačními testy. V této složce se kontroluje, zda nechybí nějaké testy oproti složkám s aplikací, které se definují dále.
# V této složce mohou být testy navíc, to ničemu nevadí. Struktura v této složce musí odpovídat struktuře ve složkách s aplikací.
testDir: %appDir%/../tests/Acceptance
componentCoverage:
clientModulePresenters: # Název kategorie testovaných věcí. Libovolný název.
componentDir: %appDir%/Modules/ClientModule # Složka s implementací daných komponent
appFileMask: '(.*)Presenter.php' # Regulární výraz: pro které soubory v app složce se má kontrolovat existence testů
testFileMask: '{$1}PresenterCest.php' # Maska souborů v test složce, pokud testovací framework potřebuje speciální suffix. Např.: Pokud je presenter v `%appDir%/Modules/ClientModule/ClientPresenter.php`, bude se k němu hledat soubor s testem v `<testDir>/Modules/ClientModule/ClientPresenterCest.php`.
methodMask: action.* # Regulární výraz: pro které metody se mají hledat metody v testech. Aktuálně se jména musí shodovat 1:1.
grids:
componentDir: %appDir%/Components/Grids
appFileMask: '(.*)Grid.php'
testFileMask: '{$1}GridCest.php'
methodMask: render.*
...
2 启动命令
$ php bin/console adt:component-test-coverage
2.1 开关
--psr4 - provede kontrolu zda se nevyskytují soubory, které nejsou kompatibilni s PSR4 standardem pokdu se vyskytnou je vrácena hodnota 1. Na obrazovce se vypíše seznam souborů neplnících PSR-4.
--missing-tests - provede kontrolu zda se v projektu nenecházejí metody pro které nejsou vytvořeny testy. Pokud jsou takové nalezeny, je vrácena hodnota 1 a na obrazovce se vypíší chybějící testy.
3 例子
3.1 测试组件
namespace App\Modules\ClientModule;
class ClientPresenter extends BasePresenter
{
public function actionNew()
{
// some code
}
}
3.2 测试类
namespace Tests\Acceptance\Modules\ClientModule;
class ClientPresenterCest extends BasePresenterCest
{
public function actionNew(AcceptanceTester $I)
{
$I->crawl([
'/client/new',
]);
}
}
其中函数 crawl
的实现已经超出了这个组件的范围,并且每个项目都会自行解决测试的实现。例如:
public function crawl(array $urls)
{
$I = $this;
foreach ($urls as $url) {
$I->amOnPage($url);
$I->dontSee('chyba 404');
$I->dontSee('chyba 500');
$I->dontSee('Nedostatečná práva');
}
}
对于更复杂的组件,通常需要编写更复杂的测试。例如,对于网格,可以测试设置过滤器并提交过滤、翻页等。对于表单,可以测试值的变化和保存等。