我正在编写一个简单的javascript单元测试...
我正在尝试编写测试以确保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()
失败。我做错了什么?
答案 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)
);
。希望这有帮助!