2016-08-15 2 views
0

Ich schreibe einen Mokkatest für eine Aufgabe und ich möchte den Wert B 3 Minuten nach der Rückkehr von Funktion A überprüfen. Also, ich suche nach etwas, das mir hilft, die Zeit zu ändern, weil ich eigentlich nicht 3 Minuten warten möchte. Ich muss überprüfen, ob ein Bestätigungscode nach 3 Minuten entfernt wird oder nicht, ich diese Zeile in meiner Redis-Datenbank haben:Mit Sinon Redis einen Schlüssel ablaufen lassen

RedisClient.expire(data._id, 180); 

und in meiner Testdatei habe ich einen Test:

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

aber clock.tick funktioniert nicht wie erwartet. Nach diesem Test sollte ein Benutzer in der Lage sein, erneut einen Bestätigungscode anzufordern, da der alte gelöscht werden sollte, aber es scheint, dass der alte noch in Redis ist.

+0

Haben Sie einen Code, um uns zu zeigen? – MarcoL

+0

Willkommen bei StackOverflow. Damit die Leute Ihnen helfen können, stellen Sie sicher, dass Sie einige Ihrer Aufgaben (z. B. Ihren Code) in die Frage eingeben und die bereits geleistete Arbeit zeigen. Dann werden wir Ihnen eher helfen :) – deeveeABC

Antwort

1

Der Redis-Server ist ein Prozess extern zu Knoten. Das einzige, was Sinon beeinflussen kann, ist, wie der Code im Knoten die von Node bereitgestellte Uhr sieht. Es beeinflusst nicht, wie Redis die Uhr sieht. Sie können also Redis nicht zwingen, einen Schlüssel mit Sinon ablaufen zu lassen.

Sie können Ihren Code aktivieren, um beim Testen einen anderen, kürzeren Ablaufwert festzulegen. Oder simulieren Sie den Ablauf des Schlüssels, indem Sie den Schlüssel in Ihrem Testcode löschen.