缓存在在测试中不生效
来源:5-5 短信验证码接口调试

慕斯卡6156447
2021-12-09
老师您好,这个短信接口 防刷验证的 部分,我在test测试中,每次测试都回返回成功,相应的缓存写入后就会消失。防止连续发送的功能一直不生效,但是同样的代码我在postman上测试就都没问题。
我观察的现象是在test中跑接口,缓存存进去进去就会立马被删除。
测试用例中的 use DatabaseTransactions 回滚注释掉也是没用的。
防刷的逻辑:
/**
* todo 防刷验证,一分钟内只能请求一次,一天请求10次
* todo 此处使用redis的 add方法,add方法添加缓如果缓存已经存在,则会返回false,而不会覆盖之前的缓存,区别于put方法。
*/
$lock = Cache::add('regCaptcha_lock_'.$mobile, 100, 60);
if (!$lock) {
return [
'errno' => 702,
'error' => '一分钟内已经请求过,请稍后再试'
];
}
测试用例:
public function testRegCaptcha()
{
$response = $this->post('wx/auth/regCaptcha', [
'mobile' => '15002481639'
]);
$response->assertStatus(200); //断言 HTTP 状态码 200
$response->assertJson([ //断言 返回数据json 比较 assertJson
'errno' => 0,
'error' => '成功',
'data' => null
]);
// $response->assertJson([ //断言 返回数据json 比较 assertJson
// 'errno' => 702,
// 'error' => '一分钟内已经请求过,请稍后再试'
// ]);
}
写回答
1回答
-
檀梵
2021-12-09
phpunit的配置文件的缓存驱动默认是array,数据只单次有效,所以要串流程可以放一次单测里串起来。
00
相似问题