【问题标题】:Codeception: Cleaning test data from databaseCodeception:从数据库中清理测试数据
【发布时间】:2013-09-24 09:45:54
【问题描述】:

我一直在使用 Codeception 编写一些单元测试,而我的数据库已经被测试数据过度运行。在阅读文档时,我发现它说:

每次测试后都会清理和填充数据库

有人知道 yaml 文件中是否有任何内容,或者我需要在 tear down 方法中添加什么内容吗?

这是我的测试:

use Codeception\Util\Stub;

class peopleAdminTest extends \Codeception\TestCase\Test
{
   /**
    * @var \CodeGuy
    */
    protected $codeGuy;

    /**
     * @var the model object
     */
    private $_model;

    /**
     * @var some mock data
     */
    private $_data = array( "people" => array( "title" => "Unit Test Data" ) );

    protected function _before()
    {
        $this->_model = new People_model();
    }

    public function test_instantiation()
    {
        $this->assertInstanceOf( 'people_model', $this->_model );
    }

    public function test_save()
    {
        $this->_model->save( $this->_data[ 'people' ] );
        $this->codeGuy->seeInDatabase( 'pegisis_people', array( 'title' => 'Unit Test Data' ) );
    }
}

【问题讨论】:

  • 感谢您的评论,我已经有了在我的 tests/_data/dump.sql 文件中创建表的查询,但我认为不会发生任何事情,因为我的数据库中仍然有数据跨度>

标签: php unit-testing codeception


【解决方案1】:

你是否在 unit.suite.yml 中添加了 populate: true 和 cleanup: true ?

检查供应商/codeception/src/Codeception/Module/Db.php。 _after() 或 codeception 中的 teardown 方法不会清理 Db。清理在 _before() 中完成,然后执行 sql。

【讨论】:

  • 感谢您的回复。添加 populate: true 和 cleanup: true 似乎确实有效,尽管它在我第一次运行测试时并没有清除数据库,只是之后的任何时候。我的供应商目录中也没有代码接收目录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
相关资源
最近更新 更多