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

我实际上有两个问题:

  • 我将如何使用Phinx进行数据库设置? Phinx通常用作命令行工具,但是我需要某种方式从单元测试类的setup方法中调用。
  • 我将如何集成测试我编写的Migration类?我想要某种验证,即在每个迁移步骤之后,我的数据库都处于预期状态(也许包括一些在每次迁移期间都应保持一致的示例数据)
  • 最佳答案

    这是一个解决方案。

    <?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/

    10-10 04:07