2016-08-15 4 views
0

일부 작업에 대한 모카 테스트를 작성 중이며 함수 A가 반환 된 후 3 분 후에 값 B를 확인하려고합니다. 그래서 저는 실제로 3 분을 기다리지 않기 때문에 시간을 바꾸는 데 도움이되는 것을 찾고 있습니다. 내가 확인 코드가 삼분 후 여부를 제거되는지 여부를 확인해야합니다, 내 레디 스 데이터베이스에이 라인이 있습니다Sinon을 사용하여 Redis가 키를 만료 시키게합니다.

it('should send a confirmation code for: 00989130000963', function (done) { 
     api 
      .post(settings.UserRegister) 
      .set("ping-client", "M") 
      .set("type","register") 
      .expect(200) 
      .send(postData) 
      .end(function (err, res, body) { 
       if (err) { 
        throw err; 
       } 
       if (res.body.result === "WAIT") { 
        if (res.body.confirmHeader !== "") { 
         clock.tick(180*1000 + 100) 
         console.log(clock) 
         done(); 
        } 
        throw new Error("no header set"); 
       } else { 
        throw new Error("not in the wait state"); 
       } 
      }); 

:

RedisClient.expire(data._id, 180); 

내 테스트 파일을 나는 검사를 그러나 clock.tick은 예상대로 작동하지 않습니다.이 테스트가 끝나면 사용자는 확인 코드를 다시 요청할 수 있습니다. 이전 코드는 삭제해야하기 때문에 다시 시도해야하지만 이전 버전은 여전히 ​​Redis에있는 것으로 보입니다.

+0

Google에 표시 할 코드가 있습니까? – MarcoL

+0

StackOverflow에 오신 것을 환영합니다. 사람들이 당신을 도울 수 있도록하기 위해 이미 작업 한 내용을 보여주는 질문에 자신의 코드 (예 : 코드)를 넣어야합니다. 그러면 우리는 당신을 도울 가능성이 더 높습니다 :) – deeveeABC

답변

1

Redis 서버는 노드 외부의 프로세스입니다. Sinon이 영향을 줄 수있는 유일한 방법은 노드코드가 Node에서 제공하는 시계를 보는 방법입니다. Redis가 시계를 보는 방법에는 영향을 미치지 않습니다. 따라서 Redis가 Sinon과 함께 키를 만료하도록 강요 할 수는 없습니다.

코드에서 테스트시 다른 짧고 만료 값을 설정할 수 있습니다. 또는 테스트 코드에서 키를 삭제하여 키 만료를 시뮬레이트합니다.

관련 문제