如何在Karma / Jasmine / Phantom JS中对cookie过期进行单元测试

时间:2017-03-30 01:02:40

标签: javascript unit-testing cookies phantomjs karma-jasmine

我正在编写一个简单的javascript单元测试...

  • Karma v1.5.0
  • Jasmine v2.5.3
  • PhantomJS v2.1.14

我正在尝试编写测试以确保Cookie获得正确的到期日期(30天)。最新版本的Jasmine支持使用jasmine.clock()伪造时间,但这似乎不适用于Cookie过期...

describe("cookies...", function () {

    it("expire after 30 days", function () {

        jasmine.clock().install();

        set_a_cookie_to_expire_in_30_days();

        jasmine.clock().tick(29 *24*60*60*1000); //fast forward 29 days

        expect(check_cookie()).toBeTruthy();

        jasmine.clock().tick(2 *24*60*60*1000); //fast forward another 2 days

        expect(check_cookie()).toBeFalsy(); //THIS FAILS

        jasmine.clock().uninstall();
    });

});

第二个expect()失败。我做错了什么?

1 个答案:

答案 0 :(得分:0)

Jasmine时钟For Each ws In Worksheets 'For Each tbl In ws.ListObjects.... Next ws 实际上不会影响浏览器中传递的时间。它只会执行setTimeouts或setIntervals的回调。

来自他们的文档:

  

Jasmine Clock适用于需要能够使用setTimeout或setInterval回调的测试套件。它使定时器回调同步,只有在时间向前勾选时才执行注册的功能。这使得与计时器相关的代码更容易测试。

您应该使用tick

mockDate

如果您向前拨打29天,则可以在29天前再次jasmine.clock().mockDate( new Date(2018, 5, 11) ); 。希望这有帮助!