honzavaclavik/testbench

Nette Framework应用的简单集成测试工具

v2.7.2 2019-02-15 08:10 UTC

README

目前我没有时间、精力和金钱来维护这个项目。但如果您依赖这个项目并且想要成为赞助者或进一步开发它,请不要犹豫,与我联系。否则,我无法保证这个仓库的美好未来... :)

Build Status

针对PHP 5.6和7.0进行了测试。请阅读这个维基

深受以下GitHub项目的启发

以及文章

Nette Framework项目的简单测试平台

尽可能简单地进行集成测试。该项目可以帮助您快速编写测试。DRY!该项目的目标是使每个人都能非常简单地进行测试,并帮助困难的开始。

您可以在本README中找到一些示例,或者查看此项目中的tests文件夹。

安装

$ composer require honzavaclavik/testbench

Testbench本身不需要数据库。但如果您想使用Testbench\TDoctrineTestbench\TNetteDatabase特性,您必须为首次连接设置数据库。您应该使用标准的数据库配置 - 没有什么特别之处。您可以在tests/tests.local.neon.dist文件中看到示例。空数据库对Testbench来说就足够了。支持以下数据库

  • Doctrine 2
  • Nette\Database

对于其他数据库,请发送PR或创建问题。

最小化代码

首先,您需要一个经典的引导文件(仅示例,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');
});

重要的是,我们在这里不创建依赖注入容器。如果您不想使用robot loader,可以使用composer的autoload。您还应该创建一个配置文件,例如tests.neon。此文件目前仅用于数据库测试。在此文件中,您应该在测试之前配置项目

testbench:
	sqls: #what should be loaded after empty database creation
		- %appDir%/../sqls/1.sql
		- %appDir%/../sqls/2.sql

然后您就可以开始了

<?php //HomepagePresenterTest.phpt

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();

您可以使用测试UI控件、受限区域、表单、信号、重定向等

请阅读这篇文章

试试看!

看看此项目中的测试。您会看到如何正确使用它。在tests文件夹或维基中都有示例。学习如何使用这些特性