You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Linux s7 5.15.0-69-generic #76-Ubuntu SMP Fri Mar 17 17:19:29 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Subsystem
test
What steps will reproduce the bug?
When a mocked setInterval timer is triggered, the timers runAt time is updated for the next time it should run here. However , the increment is actually always 1, since the boolean flag isInterval is stored in the timer here
Pull request incoming.
test("setInterval uses the wrong interval",async(t)=>{t.mock.timers.enable({apis: ["setInterval"]});constfn=t.mock.fn();setInterval(fn,1000);assert.strictEqual(fn.mock.callCount(),0);t.mock.timers.tick(1000);assert.strictEqual(fn.mock.callCount(),1);for(leti=0;i<999;++i){t.mock.timers.tick(1);}assert.strictEqual(fn.mock.callCount(),1);});
fails with:
❯ ~/src/libs/node/node index.mjs
﹣ aborting setTimeout clears wrong timer (2.795504ms) # SKIP
﹣ aborting setTimeout after timer is already triggered clear wrong timer (0.20311ms) # SKIP
✖ setInterval uses the wrong interval (24.795796ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
1000 !== 1
at TestContext.<anonymous> (file:///home/mfischer/src/tests/node-mock-timers/index.mjs:72:10)
at Test.runInAsyncScope (node:async_hooks:206:9)
at Test.run (node:internal/test_runner/test:631:25)
at Test.processPendingSubtests (node:internal/test_runner/test:374:18)
at Test.postRun (node:internal/test_runner/test:715:19)
at Test.run (node:internal/test_runner/test:673:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:374:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 1000,
expected: 1,
operator: 'strictEqual'
}
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
setInterval should use the correct interval
What do you see instead?
setInverval always uses interval 1 after first time
Additional information
No response
The text was updated successfully, but these errors were encountered:
Version
main
Platform
Linux s7 5.15.0-69-generic #76-Ubuntu SMP Fri Mar 17 17:19:29 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Subsystem
test
What steps will reproduce the bug?
When a mocked
setInterval
timer is triggered, the timers runAt time is updated for the next time it should run here. However , the increment is actually always 1, since the boolean flagisInterval
is stored in the timer herePull request incoming.
fails with:
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
setInterval should use the correct interval
What do you see instead?
setInverval always uses interval 1 after first time
Additional information
No response
The text was updated successfully, but these errors were encountered: