【问题标题】:Unit testing CakePHP application that uses stored procedures单元测试使用存储过程的 CakePHP 应用程序
【发布时间】:2013-03-15 02:53:29
【问题描述】:

有人知道为使用 MySQL 存储过程的 CakePHP 2.3.1 应用程序开发单元测试的正确方法吗?

我查看过蛋糕网站,但有关测试的文档并不多。我也检查了 SO 和 Google - 似乎找不到问题/情况的提及。

单元测试使用的是固定装置,而不是数据的真实数据库。

非常感谢任何帮助/指针!

J

【问题讨论】:

    标签: mysql unit-testing cakephp stored-procedures


    【解决方案1】:

    重载 Fixture 的 create() 方法。不要忘记调用 parent 的 create() 并删除 create procedure 语句中结束 END 之后的最终分隔符。

    例如:

    public function create($db){
        parent::create($db);
        // create stored procedures ...
        $db->execute("CREATE PROCEDURE … <insert SQL here> … END", array('log' => false));
    }
    

    create() 方法可以在夹具表创建后执行您需要的任何语句。

    我希望它会起作用

    【讨论】:

    • 一些反馈,为他人完成答案:除非您想在测试后留下存储过程(并导致第二次出现 sql 错误),否则也将“drop procedure”语句放入夹具的覆盖 drop() 方法。注意:您的 db 用户将需要在 test 数据库上更改 privs! J
    • 我不得不从脚本的上方和下方删除 DELIMITER 命令。 (我通常以DELIMITER $$ 开始存储过程并以DELIMITER ; 结束。这导致CakePHP 出现“语法错误或访问冲突:1064”。)
    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2019-11-01
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多