CodeIgniter中的事务测试模式

时间:2013-05-10 11:47:56

标签: codeigniter unit-testing transactions

我在关于CodeIgniter的文档中看到了:

  

“您可以选择将交易系统置于”测试模式“,即   将导致您的查询回滚 - 即使查询   产生有效的结果。要使用测试模式,只需设置第一个   $this->db->trans_start()函数中的参数TRUE


据我所知,能够使用事务(test_mode)来支持数据库fixture来测试插入,更新,删除。但它仍然会对数据库产生影响。我设置db_debug为TRUE。 对这个问题有什么想法吗?非常感谢。

Example code in my controller:

public function __construct(){
  //load database library and model
   $this->load->library('database');
   $this->load->model('message_mdl');
}

public function do()
{
    $data_insert = array('message' => 'hello');
    $this->db->trans_start(true);
    $this->message_mdl->insert($data_insert);
    $this->db->trans_complete();
}

1 个答案:

答案 0 :(得分:0)

我试过这个也不适合我。我不知道为什么!我会试着找到原因。用适当的方法回到这里。如果你发现了,请告诉我。

但我尝试了替代方法,它的工作正常。

public function dothis()
{
    $data_insert = array('message' => 'hello');
    $this->db->trans_begin(); //Manually start transaction.
    $this->message_mdl->insert($data_insert);
    $this->db->trans_rollback(); //Rollback
}

确保完全不使用 $this->db->trans_off();