-
Notifications
You must be signed in to change notification settings - Fork 11.9k
fix(@angular/build): allow TestBed provider configuration with vitest unit-testing #30276
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
hybrist
left a comment
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.
That's a really neat solution for this!
alan-agius4
left a comment
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.
See feedback
| `import { beforeEach, afterEach } from 'vitest';`, | ||
| '', | ||
| normalizedOptions.providersFile | ||
| ? `import providers from './${path.relative(projectSourceRoot, normalizedOptions.providersFile)}'` |
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.
A couple of notes:
path.relativewill return backslashes on Windows, which will break the import paths.- The file extension (.ts) is retained. Can this cause issues? (I guess not as this is not typechecked).
- Instead of using
projectSourceRoot, it probably makes more sense to useworkspaceRoot, since paths inangular.jsonare all relative to the workspace root.
We handle a similar case here for reference:
angular-cli/packages/angular/build/src/tools/esbuild/application-code-bundle.ts
Lines 748 to 755 in 505c836
| function entryFileToWorkspaceRelative(workspaceRoot: string, entryFile: string): string { | |
| return ( | |
| './' + | |
| relative(workspaceRoot, entryFile) | |
| .replace(/.[mc]?ts$/, '') | |
| .replace(/\\/g, '/') | |
| ); | |
| } |
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.
Added the extra cleanup logic from the linked code.
… unit-testing
The experimental `unit-test` builder with the `vitest` runner configured
can now specify an Angular providers file via the `providersFile` option.
This allows the TestBed initialization to use the providers defined in
this file for all executed tests. The contents of the providers file should
include a default export with an array of one or more Angular providers.
As an example:
```
import { provideZonelessChangeDetection } from '@angular/core';
export default [
provideZonelessChangeDetection(),
];
```
ac0c952 to
a368d62
Compare
|
The changes were merged into the following branches: main, 20.0.x |
|
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
The experimental
unit-testbuilder with thevitestrunner configured can now specify an Angular providers file via theprovidersFileoption. This allows the TestBed initialization to use the providers defined in this file for all executed tests. The contents of the providers file should include a default export with an array of one or more Angular providers. As an example: