ijvo/testbench

Nette 框架应用的单集成测试工具

v3.1.4 2023-12-09 19:57 UTC

README

Build Status Latest stable

Testbench

https://github.com/mrtnzlml-archive/testbench 分支而来

Nette 3.0 更新

已测试 PHP 7.4。

请阅读 此维基百科

深受以下 GitHub 项目的启发

以及文章

Nette 框架项目的简单测试平台

尽可能简单地编写集成测试。此项目帮助您快速编写测试。DRY! 此项目的主要目标是使测试对每个人来说都非常简单,并帮助解决困难的起点。

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

安装

$ composer require ijvo/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');
});

重要的是,我们在这里不是创建依赖注入容器。如果您不想使用机器人加载器,可以使用 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\Controls、受限区域、表单、信号、重定向等相关的测试

请阅读 这篇文章

试试看!

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