webnazakazku/mango-tester-database-creator 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

webnazakazku/mango-tester-database-creator

Composer 安装命令:

composer require webnazakazku/mango-tester-database-creator

包简介

README 文档

README

build

Testing helper for crate test databases with easy to use API with Mango Tester.

Installation

The recommended way to install is via Composer:

composer require webnazakazku/mango-tester-database-creator

It requires PHP version 7.1.

Integration & configuration

Example of using:

tests/config/tests.neon

extensions:
	mango.tester: Webnazakazku\MangoTester\Infrastructure\MangoTesterExtension
	mango.tester.presenterTester: Webnazakazku\MangoTester\PresenterTester\Bridges\Infrastructure\PresenterTesterExtension
	mango.tester.databaseCreator: Webnazakazku\MangoTester\DatabaseCreator\Bridges\NetteDI\DatabaseCreatorExtension
	mango.tester.databaseCreatorInfrastructure: Webnazakazku\MangoTester\DatabaseCreator\Bridges\Infrastructure\DatabaseCreatorInfrastructureExtension
	- Webnazakazku\MangoTester\HttpMocks\Bridges\Infrastructure\HttpExtension

	nettrine.annotations: Nettrine\Annotations\DI\AnnotationsExtension
	nettrine.cache: Nettrine\Cache\DI\CacheExtension

	nettrine.dbal: Nettrine\DBAL\DI\DbalExtension

	migrations: Nextras\Migrations\Bridges\NetteDI\MigrationsExtension

	nettrine.extensions.beberlei: Nettrine\Extensions\Beberlei\DI\BeberleiBehaviorExtension

	nettrine.orm: Nettrine\ORM\DI\OrmExtension
	nettrine.orm.cache: Nettrine\ORM\DI\OrmCacheExtension
	nettrine.orm.annotations: Nettrine\ORM\DI\OrmAnnotationsExtension

parameters:
	appContainer:
		parameters:
			appDir: %appDir%
			wwwDir: %wwwDir%
			tempDir: %tempDir%
		configFiles:
			- %appDir%/config/config.neon
			- %appDir%/config/local.neon
		databaseConnectionServiceName: database.default.connection

migrations:
	dir: %appDir%/../migrations # migrations base directory
	driver: mysql               # pgsql or mysql
	dbal: doctrine              # nextras, nette, doctrine or dibi
	withDummyData: true
	phpParams:
		container: @container
		entityManager: @nettrine.orm.entityManagerDecorator

nettrine.extensions.beberlei:
    driver: mysql

nettrine.dbal:
	debug:
		panel: false
	connection:
		driver: pdo_mysql
		host: %dbHost%
		user: %dbUser%
		password: %dbPassword%
		dbname: %dbName%

nettrine.orm:
	# Own em class
	entityManagerDecoratorClass: PPIS\System\Model\EntityManagerDecorator

nettrine.orm.annotations:
	mapping:
		App\Model\Entities: '%appDir%/Model/Entities'

mango.tester.databaseCreator:
	driver: mysql
	dbal: Webnazakazku\MangoTester\DatabaseCreator\Bridges\NextrasMigrations\MySqlNextrasMigrationsDbalAdapter
	migrations: Webnazakazku\MangoTester\DatabaseCreator\Bridges\NextrasMigrations\NextrasMigrationsDriver
	strategy: reset
	databaseName:
		format: 'app_test_%d'

services:
	- AppTests\AppConfiguratorFactory

src/AppConfiguratorFactory

<?php declare(strict_types = 1);

namespace AppTests;

use Nette\Configurator;
use Nette\DI\Container as DIContainer;
use Nette\DI\Definitions\Statement as DIStatement;
use Nette\Neon\Neon;
use Nette\Utils\Finder;
use Throwable;
use Webnazakazku\MangoTester\DatabaseCreator\DatabaseCreator;
use Webnazakazku\MangoTester\Infrastructure\Container\IAppConfiguratorFactory;

class AppConfiguratorFactory implements IAppConfiguratorFactory
{

	/** @var DatabaseCreator */
	private $databaseCreator;

	public function __construct(DatabaseCreator $databaseCreator)
	{
		$this->databaseCreator = $databaseCreator;
	}

	public function create(DIContainer $testContainer): Configurator
	{
		$testDatabaseName = $this->databaseCreator->getDatabaseName();

		$testContainerParameters = $testContainer->getParameters();

		$configurator = new Configurator();
		$configurator->setDebugMode(true);
		$configurator->setTempDirectory($testContainerParameters['tempDir']);

		$appDir = __DIR__ . '/../../app';
		$wwwDir = __DIR__ . '/../../temp/tests/www';

		$configurator->addParameters(
			[
				'appDir' => $appDir,
				'wwwDir' => $wwwDir,
			]
		);

		$configurator->addConfig(__DIR__ . '/../config/app.neon');

		$configurator->createRobotLoader()
			->addDirectory($appDir)
			->register();

		$configurator->addConfig($appDir . '/config/config.neon');
		$configurator->addConfig($appDir . '/config/tests.local.neon');

		$configurator->addConfig(
			[
				'console' => [
					'url' => null,
				],
				'nettrine.dbal' => [
					'debug' => [
						'panel' => false,
					],
					'connection' => [
						'dbname' => $testDatabaseName,
					],
				],
				'services' => [
					'nettrine.dbal.connection' => [
						'setup' => [
							new DIStatement('@databaseCreator::createTestDatabase'),
						],
					],
				],
			]
		);

		return $configurator;
	}

}

webnazakazku/mango-tester-database-creator 适用场景与选型建议

webnazakazku/mango-tester-database-creator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.38k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2022 年 01 月 11 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 webnazakazku/mango-tester-database-creator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 webnazakazku/mango-tester-database-creator 我们能提供哪些服务?
定制开发 / 二次开发

基于 webnazakazku/mango-tester-database-creator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 5.38k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 6
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-01-11