缓存在在测试中不生效

来源: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,数据只单次有效,所以要串流程可以放一次单测里串起来。

0
0

Laravel重构企业级电商项目 从根源解决重构难题

一门专注于提升大型复杂项目重构能力的课程

423 学习 · 149 问题

查看课程