nexendrie / testbench
Simple integration testing tool for Nette Framework applications
Installs: 2 428
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 13
pkg:composer/nexendrie/testbench
Requires
- php: >=7.4.0
- kdyby/fake-session: ^2.1 || ^3.0
- nette/application: ^2.4.16 || ^3.0.7
- nette/bootstrap: ^2.4.6 || ^3.0
- nette/di: ^2.4.16 || ^3.0.5
- nette/safe-stream: ^2.4.1
- nette/security: ^2.4.4 || ^3.0.5
- nette/tester: ^2.3.3
- nette/utils: ^2.5.4 || ^3.1.3
Requires (Dev)
- kdyby/doctrine: ^3.1
- kdyby/doctrine-cache: ^2.5
- kdyby/doctrine-dbal-batchimport: dev-master
- kdyby/events: ^3.1
- latte/latte: ^2.5.3 || ^3.0
- nette/database: ^2.4 || ^3.0
- nette/forms: ^2.4.10 || ^3.0.2
- nette/robot-loader: ^2.4.4 || ^3.3.1
- nette/security: ^2.4.4
- nettrine/migrations: ^0.4
- php-parallel-lint/php-console-highlighter: ^0.5
- php-parallel-lint/php-parallel-lint: ^1.2
- phpstan/phpstan: ^0.12.52
- phpstan/phpstan-nette: ^0.12
- squizlabs/php_codesniffer: ^3.5.8
- tracy/tracy: ^2.6.5 || ^3.0
Suggests
- kdyby/doctrine: Allows enhanced database tests using Doctrine
- kdyby/doctrine-dbal-batchimport: Allows SQL scripts import for Doctrine (required with kdyby/doctrine)
- nette/database: Allows enhanced database tests using Nette\Database
- nettrine/migrations: Migrate database to the fresh state
Conflicts
- doctrine/orm: >=2.7.3
Replaces
- mrtnzlml/testbench: >=2.4
README
Tested against PHP 7.4. Please read this wiki.
Heavily inspired by these GitHub projects:
- Kdyby/TesterExtras, Librette tests, Nette tests and damejidlo/modular-testcase
And article(s):
- Bootstrap your integration testing database (Jiří Pudil)
- Testování presenterů v Nette (Martin Zlámal)
Simple test bench for Nette Framework projects
Write integration tests as simple as possible. This project helps you to write tests very quickly. DRY! The main goal of this project is to make testing very simple for everyone and help with the difficult start.
You can find few examples in this readme or take a look to the tests folder in this project.
Installation
$ composer require --dev nexendrie/testbench
Minimal code
At first, you need classic bootstrap file (just example, DIY):
<?php require __DIR__ . '/../vendor/autoload.php'; Testbench\Bootstrap::setup(__DIR__ . '/_temp', function (\Nette\Configurator $configurator) { $configurator->createRobotLoader()->addDirectory([ __DIR__ . '/../app', ])->register(); $configurator->addParameters([ 'appDir' => __DIR__ . '/../app', ]); $configurator->addConfig(__DIR__ . '/../app/config/config.neon'); $configurator->addConfig(__DIR__ . '/tests.neon'); });
It's important, that we are not creating dependency injection container here. You can use autoload from composer if you don't want to use robot loader.
And you are ready to go:
<?php require __DIR__ . '/../bootstrap.php'; /** * @testCase */ class HomepagePresenterTest extends \Tester\TestCase { use \Testbench\TPresenter; public function testRenderDefault() { $this->checkAction('Homepage:default'); } public function testRenderDefaultModule() { $this->checkAction('Module:Homepage:default'); } } (new HomepagePresenterTest())->run();
You can easily write cover with tests UI\Controls, restricted areas, forms, signals, redirects, ...
Please read this article.
Give it a shot!
Look at the tests in this project. You'll see how to use it properly. There are examples in tests folder or in the wiki. Learn how to use these traits: