php - 集成测试 PHPUnit 和 Phinx

标签 php phpunit database-migration

我正在创建一个 PHP REST api,使用 PHPUnit 进行单元测试和集成测试。我正在寻找集成 phinx 进行数据库迁移(而不是自己构建迁移代码)。

其实我有两个问题:

  • 我将如何使用 Phinx 进行数据库设置? Phinx 通常用作命令行工具,但我需要一些方法从我的单元测试类中的设置方法调用。

  • 我将如何对我编写的迁移类进行集成测试?我想要某种验证,以确保在每个迁移步骤之后我的数据库处于某种预期状态(可能包括一些在每次迁移期间应该保持一致的样本数据)

最佳答案

这是一个解决方案。

<?php
use Phinx\Console\PhinxApplication;
use Symfony\Component\Console\Input\StringInput;
use Symfony\Component\Console\Output\NullOutput;
use Phinx\Wrapper\TextWrapper;

class ExampleTest extends TestCase
{

private static $T;

public function setUp(){
    $app = new PhinxApplication();
    $app->setAutoExit(false);
    $app->run(new StringInput(' '), new NullOutput());

    self::$T = new TextWrapper($app);
    self::$T->getMigrate("testing");
}

public function tearDown(){
    self::$T->getRollback("testing");
}

?>

简短而甜美。

关于php - 集成测试 PHPUnit 和 Phinx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343227/

相关文章:

php - 如何用逗号将不同的行值放入 td 中

PHPUnit 未定义函数 mysql_connect()

sql-server - VCS 中具有迁移的数据库

php - 如何使用连接超过3个表来计算列数据

php - AJAX 不调用 PHP 文件

PHP DOMDocument 将节点从一个文档移动到另一个文档

grails - 我可以在 Grails 项目之外运行数据库迁移插件脚本吗?

php - 为什么 PhpStorm 不知道 PHPUnit_Framework_TestCase

phpunit:为什么这个 assertContains 通过了?

node.js - 使用迁移工具生产 SailsJS 系统的分步指南