-
-
Notifications
You must be signed in to change notification settings - Fork 5.3k
test: use fake timers instead of setTimeout
mock
#32142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR replaces manual setTimeout
mocks in composables tests with Vitest’s fake timer API, enabling precise control over timer callbacks.
- Swapped out
vi.stubGlobal('setTimeout', ...)
forvi.useFakeTimers()
/vi.useRealTimers()
. - Added
vi.advanceTimersToNextTimer()
calls to flush pending timers between assertions. - Ensured real timers are restored at the end of each test.
Comments suppressed due to low confidence (1)
test/nuxt/composables.test.ts:993
- There is a typo in the test description: 'stoping' should be 'stopping'.
it('expect loading state to be changed by force starting/stoping', async () => {
}) | ||
}) | ||
|
||
describe('loading state', () => { | ||
it('expect error from loading state to be changed by finish({ error: true })', async () => { | ||
vi.stubGlobal('setTimeout', vi.fn((cb: () => void) => cb())) | ||
vi.useFakeTimers() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After enabling fake timers, pending callbacks (e.g., from start()
and finish()
) won't run automatically; consider adding vi.advanceTimersToNextTimer()
after those calls to ensure error.value
is updated as expected.
Copilot uses AI. Check for mistakes.
WalkthroughThe test file test/nuxt/composables.test.ts was updated to use Vitest's built-in fake timer utilities instead of manually stubbing setTimeout. The changes include replacing vi.stubGlobal('setTimeout', vi.fn(...)) with vi.useFakeTimers() at the start of each relevant test and vi.useRealTimers() at the end. Additionally, vi.advanceTimersToNextTimer() was added after asynchronous operations to advance timers and execute pending callbacks. These modifications affect four test cases related to loading state behaviour, but the test logic and assertions remain the same. No exported or public entity declarations were altered. Note ⚡️ AI Code Reviews for VS Code, Cursor, WindsurfCodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback. Note ⚡️ Faster reviews with cachingCodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
⏰ Context from checks skipped due to timeout of 90000ms (3)
🔇 Additional comments (4)
✨ Finishing Touches
🧪 Generate Unit Tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
@nuxt/kit
nuxt
@nuxt/schema
@nuxt/rspack-builder
@nuxt/vite-builder
@nuxt/webpack-builder
commit: |
CodSpeed Performance ReportMerging #32142 will not alter performanceComparing Summary
|
🔗 Linked issue
📚 Description
This PR replaces the setTimeout mocks with Vitest fake timers. This should be an improvement, as it is now possible to control where you want to skip the timers for testing purposes.