gpt4 book ai didi

mysql - cakePHP 运行单元测试的问题

转载 作者:行者123 更新时间:2023-11-30 01:29:41 25 4
gpt4 key购买 nike

我在尝试在 cakePHP 2.0 应用程序中测试某些内容时遇到了最奇怪的问题。我在模型中有一个函数,用于查询数据库以检查应用程序是否在过去 25 天内已发送通知:

public function checkIfNotified($userId){
$query = 'SELECT count(`user_id`) AS notify '.
'FROM `churn_stats` '.
'WHERE `user_id` = '. $userId.' '.
'AND `notified` = 1 '.
'AND TIME_TO_SEC(TIMEDIFF(NOW(),`created`)) <= 2160000 ';
$this->log($query);
$result = $this->query($query);
return $result;
}

我正在做一些单元测试来检查该方法是否有效,因此我正在创建一条记录并尝试测试它返回 true,如下所示:

$data['notified'] = 1;
$data['user_id'] = $userId;
$this->ChurnStats->create();
$this->ChurnStats->save($data);
$notified = $this->ChurnStats->checkIfNotified($userId);
print_r($notified);

结果是(这是错误的结果,因为我已经插入了一行!):

Array
(
[0] => Array
(
[0] => Array
(
[notify] => 0
)

)

)

但是,我运行数据库中的代码生成的确切查询,结果是: enter image description here

我已经浪费了很多时间,而且我不知道出了什么问题:(。

最佳答案

在测试和检查所有内容之后,另一个测试函数以某种方式更改了下一个测试的数据库或查询,但是奇怪的部分是另一个测试调用了相同的查询,但没有任何插入、更新或删除可能会修改下一次测试的结果或环境的内容。

检查完所有内容后,一切都简化为:查询缓存,默认情况下 CakePHP 缓存所有 $this->query("...");调用,因此修复非常简单:停用它!

$result = $this->query($query, false);

关于mysql - cakePHP 运行单元测试的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17619509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com