2016-08-15 5 views
0

私はいくつかのタスクのためにモカテストを書いています。関数Aが返ってから3分後に値Bをチェックしたいと思います。だから、私は実際に3分待たずに時間を変えるのに役立つものを探しています。 私は確認コードが3分か後に除去されるかどうかを確認する必要があり、私は私のRedisのデータベースにこのラインを持っている:Sinonを使ってRedisがキーを期限切れにする

RedisClient.expire(data._id, 180); 

と私のテストファイルで、私はテストがあります。

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"); 
       } 
      }); 

しかし、clock.tickは期待どおりに動作しません。このテストの後、古いものは削除する必要があるため、ユーザーは確認コードを再度要求することができますが、古いものはRedisに残っているようです。

+0

私たちに見せるためのコードはありますか? – MarcoL

+0

ようこそStackOverflowへ。人々があなたに手伝ってもらうために、質問にあなたの作業(コードなど)を入れて、すでに行った作業を表示してください。その後、私たちはあなたを助けてくれるでしょう:) – deeveeABC

答えて

1

Redisサーバーは、ノードの外部のプロセスです。 Sinonが影響を与えることができるのは、ノードのコードがノードによって提供されるクロックをどのように見るかだけです。レディスがどのように時計を見ているかには影響しません。だから、RedisにSinonの鍵を失効させることはできません。

あなたができることは、テストで異なる短い有効期限を設定できるようにすることです。または、テストコードのキーを削除して、キーの有効期限をシミュレートします。

関連する問題