From 82b1042def9d142f1f0aff6b7d701378d83ae946 Mon Sep 17 00:00:00 2001 From: Sonu Kapoor Date: Thu, 12 Dec 2024 10:32:18 -0500 Subject: [PATCH 1/3] [Blog Post] Mastering Angular Unit Testing: Best Practices and Tools --- content/sonukapoor/index.md | 17 + .../mastering-angular-unit-testing/index.md | 356 ++++++++++++++++++ content/sonukapoor/profile.png | Bin 0 -> 84537 bytes 3 files changed, 373 insertions(+) create mode 100644 content/sonukapoor/index.md create mode 100644 content/sonukapoor/posts/mastering-angular-unit-testing/index.md create mode 100644 content/sonukapoor/profile.png diff --git a/content/sonukapoor/index.md b/content/sonukapoor/index.md new file mode 100644 index 000000000..ab4ec2151 --- /dev/null +++ b/content/sonukapoor/index.md @@ -0,0 +1,17 @@ +--- +{ + name: "Sonu Kapoor", + firstName: "Sonu", + lastName: "Kapoor", + description: "Sonu is an Angular consultant who partners with top Forbes 100 clients to deliver cutting-edge solutions. He is a Microsoft MVP in Developer Technologies and a Google Developer Expert (GDE) in Angular.", + socials: { + twitter: "sonukapoor1978", + github: "sonukapoor", + linkedin: "sonu-kapoor", + website: "https://angular-catch-up.podbean.com/" + }, + pronouns: "they/them", + profileImg: "./profile.png", + roles: ["author"] +} +--- \ No newline at end of file diff --git a/content/sonukapoor/posts/mastering-angular-unit-testing/index.md b/content/sonukapoor/posts/mastering-angular-unit-testing/index.md new file mode 100644 index 000000000..3ec3c3e9f --- /dev/null +++ b/content/sonukapoor/posts/mastering-angular-unit-testing/index.md @@ -0,0 +1,356 @@ +--- +{ + title: "Mastering Angular Unit Testing: Best Practices and Tools", + description: "In this article, I’ll share the insights and experiences I’ve gained over the years with unit testing in Angular, along with the best practices I’ve adopted along the way.", + published: '2024-12-12', + tags: ["angular", "jest", "mocks", "javascript"], + license: 'cc-by-nc-sa-4' +} +--- + + +## Introduction + +In this article, I would like to share the experience I gained over the years with unit testing in Angular. In a nutshell I will be speaking about the followings: + +- Why you should unit test? +- Why you should mock and what are the advantages/disadvantages? +- What are SIFERS and why you should care? +- What is the Angular Testing Library (ATL)? +- Testing using SIFERS +- Querying DOM elements and dispatching events +- What are jest-auto-spies and observer-spy? + +## Why? + +I have seen many applications that do not contain any unit tests. Let me clarify why we need to write unit tests. Unit tests are a necessary aspect of any application. They provide us with assurance and confirmation about how the code should behave. They also serve as documentation to understand what the code is doing. Writing good tests helps us in understanding the design of the code. Not being able to write a unit test, indicates a bad design and usually tells us to refactor the code. + +> The more your tests resemble the way your software is used, the more +> confidence they can give you. + +## Mocks + +To make sure you can concentrate on the code that has to be tested, you must properly mock external dependencies. For instance, you should mock any services or other components that the component you are testing utilizes. It's not advised to import the real implementations (more on why below). Feel free to import pure components, though, if your component uses them as dependents. You may also import a shared module that contains all of its dependencies. + +- [Using individual components](https://angular.io/guide/testing-components-scenarios#nested-component-tests) +- [Import a shared module](https://angular.io/guide/testing-components-scenarios#setup-with-module-imports) + +### Disadvantages of not mocking + +- You will be using the real implementation and are forced to mock all of its properties, methods, etc. You will end up in a rabbit hole, where you are suddenly mocking classes that several layer down the dependency tree. +- You will have to declare the nested components and provide all of its dependencies +- It takes longer for your tests to execute since the complete dependency tree must be resolved first. +- The state of your tests might not be correct. +- Your tests will suddenly start to fail if a dependency downstream changes. +- It becomes very difficult to debug the tests when an error occurs. + +## SIFERS + +Let's start with the setup. Instead of using the `beforeEach` to set up the testing environment, I use [SIFERS](https://medium.com/@kolodny/testing-with-sifers-c9d6bb5b362). + +> **S**imple **I**njectable **F**unctions **E**xplicitly **R**eturning **S**tate (SIFERS) is a way to capture what the tests should do when setting up the testing environment as well as returning a mutable clean state. + +SIFERS use a `setup` function that can receive optional arguments to set up the testing environment. This is the biggest benefit compared to `beforeEach`. `beforeEach` gets called automatically before each unit test, hindering us to set any mocked values on the dependencies that are needed during the initialization of the component/service. + +Using SIFERS allows us to be much more flexible with the testing environment to mock values before the component/service is initialized. The `setup` function is then called in every test and can return a state for your test (Classes, Properties etc..). + +One thing I like in my SIFERS is to try to keep the number of arguments small. If you need multiple arguments or your list is growing over a certain number of parameters, you can use an interface. This will keep your code organized and easy to read. + +A simple `setup` function can look like this: + +```ts +function setup({ value = false }) { + const mockService: Partial = { + someFunction: jest.fn() + .mockReturnValue(value ? 'foo' : 'bar'), + }; + + const service = new MyService(mockService); + return { + service, + mockService, + }; +} +``` + +Using the above example, the tests can look like this: + +```ts +it('returns foo when feature flag is enabled', () => { + // Pass true into the setup to ensure that + // someFunction returns foo + const { service } = setup(true); + expect(service.someFunction()).toEqual('foo'); +}); + +it('returns bar when feature flag is disabled', () => { + // Pass false into the setup to ensure that + // someFunction returns bar + const { service } = setup(false); + expect(service.someFunction()).toEqual('bar'); +}); +``` +I am not going into the full details of SIFERS here as it's already very well explained by the author [Moshe Kolodny](https://medium.com/@kolodny). + +[Testing with SIFERS](https://medium.com/@kolodny/testing-with-sifers-c9d6bb5b362) + +## Angular Testing Library (ATL) + +I am a big fan of the [ATL](https://testing-library.com/docs/angular-testing-library/intro/) library and try to use it in all of my projects. ATL is a very lightweight solution to test Angular components. ATL is described as: + +> Angular Testing Library provides utility functions to interact with Angular components, in the same way as a user would. + +_Tim Deschryver_ + +Let's start with the setup of module. Instead of using `TestBed.configureTestingModule`, you need to use the `render` method. Keep in mind that the `render` method should only be used if you are testing **components**. Services can be tested without ATL and the `render` method. + +There are many examples of how to use the ATL [here](https://github.com/testing-library/angular-testing-library/tree/main/apps/example-app/src/app/examples). They contain everything from Components, Forms, Input/Output, NGRX, Directives, Angular Material, Signals etc. [Tim Deschryer](https://timdeschryver.dev/) also has a very detailed [article](https://timdeschryver.dev/blog/good-testing-practices-with-angular-testing-library) with lots of examples that I recommend reading. + +Here is an example using a `SIFER`, and the `render` method. You will also notice that I am using the `createSpyFromClass` method to mock the classes, which automatically mocks all functions, properties and even observables for us automatically. More on that is covered later in the article. + +```ts +import { render } from '@testing-library/angular'; +import { createSpyFromClass } from 'jest-auto-spies'; +// ... other imports + +async function setup({ enableFlag = false }) { + const mockMySomeService = createSpyFromClass(MyService); + mockMySomeService.doSomething.mockReturnValue(enableFlag); + + const { fixture } = await render(AppComponent, { + imports: [...], + providers: [{ + provide: MyService, + useValue: mockMySomeService + }], + }); +} +``` +### Setting declarations + +Similar to `TestBed`, you can pass in a collection of components and directives using [declarations](https://testing-library.com/docs/angular-testing-library/api#declarations). The syntax is the same. + +However if you are importing a module, that already contains the component, then you need to set the [excludeComponentDeclaration](https://testing-library.com/docs/angular-testing-library/api#excludecomponentdeclaration) to `true`. + +Some other useful properties that you may need to use in your tests from the ATL [API](https://testing-library.com/docs/angular-testing-library/api). See the full API for examples. + +### Setting providers + +Use the [componentProviders](https://testing-library.com/docs/angular-testing-library/api#providers) to set the providers for your component. + +### Set @Input/@Output + +Setting the `@Input` and `@Output` properties of the component can be achieved using [componentProperties](https://testing-library.com/docs/angular-testing-library/api#componentproperties). This allows you to set them both at the same time. + +If you need more control over those properties you can use the [componentInputs](https://testing-library.com/docs/angular-testing-library/api#componentinputs) or [componentOutputs](https://testing-library.com/docs/angular-testing-library/api#componentoutputs). In a `TestBed` based test, you would probably just set the input through the component instance itself. + +## Testing Services + +To test services, you do not need to use the ATL or `TestBed`. Instead, you can pass the mocked dependencies directly into the constructor of the service to be tested. The below example mocks the `LogService` and `TableService`. + +```ts +// some.service.ts +@Injectable({ providedIn: 'root' }) +export class SomeService { + constructor( + private readonly logService: LogService, + private readonly tableService: TableService) {} +} + +// some.service.spec.ts +async function setup() { + const mockLogService = createSpyFromClass(LogService); + const mockTableService = createSpyFromClass(TableService); + + const service = new SomeService( + mockLogService, + mockTableService + ); + + return { + service, + mockLogService, + mockTableService, + }; +} +``` +## Testing Components + +A component should always test the behaviour of the public API. Private APIs are never tested explicitly. **To test the components, use the DOM as much as possible.** This is the same behaviour you would expect from your user and you want your test to mimic this as much as possible. The ATL helps us with this. This is also called a shallow testing. + +Do not treat all public methods of your component as the public API that you can test directly from your unit tests. **They are only public for your template**. The public methods are called from the DOM (i.e. a button click) and should be tested in the same manner. + +Example of a component to be tested: + +```ts +// app-foo.component.ts +@Component({ + selector: 'app-foo', + template: ` + ` +}) +export class FooComponent { + constructor(private readonly someService: SomeService) {} + + handleKeyDown(value: string) { + this.someService.foo(value); + } +} +``` +Your SIFER `setup` could look like this: + +```ts +// app-foo.component.spec.ts +async function setup() { + const mockSomeService = createSpyFromClass(SomeService); + const { fixture } = await render(FooComponent, { + providers: [{ + provide: SomeService, + useValue: mockSomeService + }], + }); + + return { + fixture, + mockSomeService, + fixture.componentInstance + } +} +``` + +Do not do this. The test is directly accessing the public API, bypassing the template entirely. You could remove the DOM `input` element entirely and the test would still pass. This is a false positive test and does not serve any purpose. + +```ts +it('emits a value', async () => { + const { mockSomeService, component } = await setup(...); + component.handleKeyDown(value); + + expect(mockSomeService.foo) + .toHaveBeenCalledWith(value); +}) +``` + +This is the correct way to test the function. Here I am using `screen` to get access to the `input` element and `userEvent` to emit DOM events. + +```ts +import { screen } from '@testing-library/angular'; +import userEvent from '@testing-library/user-event'; + +it('emits a value', async () => { + const { mockSomeService, component } = await setup(...); + const textbox = screen.queryByTestId('my-input'); + + userEvent.type(textbox, 'foo,'); + userEvent.keyboard('{Enter}'); + + expect(mockSomeService.foo) + .toHaveBeenCalledWith(value); +}) +``` +## Query DOM Elements using `screen` + +The `screen` API provides several powerful functions to query the DOM. Functions like `waitFor` or `findBy` return a promise and can be used to find elements that toggle their visibility dynamically based of some conditions. + +It is recommended to query the elements in the following order. See the API for the [full priority list](https://testing-library.com/docs/queries/about#priority) and their descriptions. + +1. [getByRole](https://testing-library.com/docs/queries/byrole) +2. [getByLabelText](https://testing-library.com/docs/queries/bylabeltext) +3. [getByPlaceholderText](https://testing-library.com/docs/queries/byplaceholdertext) +4. [getByText](https://testing-library.com/docs/queries/bytext) +5. [getByDisplayValue](https://testing-library.com/docs/queries/bydisplayvalue) +6. [getByAltText](https://testing-library.com/docs/queries/byalttext) +7. [getByTitle](https://testing-library.com/docs/queries/bytitle) +8. [getByTestId](https://testing-library.com/docs/queries/bytestid) + +### Dispatching DOM Actions + +ATL comes with two APIs to dispatch events through the DOM: + +- [userEvent](https://testing-library.com/docs/user-event/intro) +- [Events](https://testing-library.com/docs/dom-testing-library/api-events/) + +`userEvent` is preferred over `fireEvents` (provided by the `Events` API). The difference as provided in the docs is: + +> fireEvent dispatches DOM events, whereas user-event simulates full interactions, which may fire multiple events and do additional checks along the way. + +## jest-auto-spies + +To Mock classes, I use [`jest-auto-spies`](https://www.npmjs.com/package/jest-auto-spies). `jest-auto-spies` return a mocked type safe class without having to manually define all of its functions and properties. Besides saving a lot of time, it also provides helper functions for observables, methods, getters, and setters. The below example is using the `createSpyFromClass` method to create a spy class. + +If you need to provide dependencies into your module directly, you can use `provideAutoSpy(MyClass)`, which is a shortcut for `{provide: MyClass, useValue: createSpyFromClass(MyClass)}`. + +Keep in mind that this should only be used if you don't need to mock any functions of that class. If you need to mock something from that class, then you should provide the mocked instance. + +Here are a few examples: + +### Create a simple spy on a class + +```ts +const mockMyService = createSpyFromClass(MyService); +``` + +### Create a spy on class and emit a value on an observable + +```ts +const mockMyService = createSpyFromClass(MyService, { + observablePropsToSpyOn: ['foo$'], +}); + +mockMyService.foo$.nextWith('bar'); +``` + +### Create a spy on a class and function + +```ts +const mockMyService = createSpyFromClass(MyService, { + methodsToSpyOn: ['foo'], +}); + +mockMyService.foo.mockReturnValue('bar'); +``` +See [`jest-auto-spies`](https://www.npmjs.com/package/jest-auto-spies) for more helper functions and its usage. + +## Use observer-spy instead of subscribe / avoid the `done` callback + +To test asynchronous code, I use `subscribeSpyTo` from the `observer-spy` library instead of subscribing to the observable. This also helps to get rid of the `done` callback. + +The `done` function was introduced to test async code. However, it is very error prone and unpredictable. Because of that you might get false positives making your tests green, while other times you might get a timeout. + +Note that there is a [lint rule](https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-done-callback.md) that you can use to prohibit the usage of the `done` callback. + +You also do not need to unsubscribe from the observable, as there is an auto [unsubscribe hook](https://github.com/hirezio/observer-spy#auto-unsubscribing) +in place. This gets called automatically in `afterEach`. + +Here are a few examples on how to use the library taken from their readme. See [more examples](https://github.com/hirezio/observer-spy#const-observerspy--subscribespytoobservable) in the readme. + +```ts +const fakeObservable = of('first', 'second', 'third'); +const observerSpy = subscribeSpyTo(fakeObservable); + +// No need to unsubscribe, as the have an auto-unsubscribe in place. +// observerSpy.unsubscribe(); + +// Expectations: +expect(observerSpy.getFirstValue()).toBe('first'); +expect(observerSpy.receivedNext()).toBeTruthy(); +expect(observerSpy.getValues()).toEqual(fakeValues); +expect(observerSpy.getValuesLength()).toBe(3); +expect(observerSpy.getValueAt(1)).toBe('second'); +expect(observerSpy.getLastValue()).toBe('third'); +expect(observerSpy.receivedComplete()).toBeTruthy(); +``` + +## Resources + +- [Angular Testing Library](https://testing-library.com/docs/angular-testing-library/intro/) +- [Angular Testing Library Examples](https://github.com/testing-library/angular-testing-library/tree/main/apps/example-app/src/app/examples) +- [Angular Testing Guide](https://angular.io/guide/testing) +- [NgRx Testing](https://ngrx.io/guide/store/testing) +- [A Guide to Robust Angular Applications](https://testing-angular.com/) +- [Good testing practices with 🦔 Angular Testing Library](https://timdeschryver.dev/blog/good-testing-practices-with-angular-testing-library) + +## Summary + +The article explored my experience with unit testing in Angular, emphasizing its importance for code quality and maintainability. It covered the necessity of proper mocking to isolate units and avoid reliance on real implementations. SIFERS were highlighted as a flexible approach for setting up the testing environment and enhancing test readability. The Angular Testing Library (ATL) was introduced as a valuable tool for component testing, mimicking user interactions as close as possible to real users. Additionally, the article mentioned useful tools like jest-auto-spies for efficient class mocking and provided resources for further exploration of testing practices in Angular. \ No newline at end of file diff --git a/content/sonukapoor/profile.png b/content/sonukapoor/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..761987bfada8dbfe8b16ed82c9a6b0a287c257af GIT binary patch literal 84537 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 Hu0mjfY??-y literal 0 HcmV?d00001 From 602e0c045680c564c8af749af7e86d2ab6375eed Mon Sep 17 00:00:00 2001 From: Sonu Kapoor Date: Sat, 28 Dec 2024 22:12:47 -0500 Subject: [PATCH 2/3] fixup! [Blog Post] Mastering Angular Unit Testing: Best Practices and Tools --- .../sonukapoor/posts/mastering-angular-unit-testing/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/sonukapoor/posts/mastering-angular-unit-testing/index.md b/content/sonukapoor/posts/mastering-angular-unit-testing/index.md index 3ec3c3e9f..0f183d67f 100644 --- a/content/sonukapoor/posts/mastering-angular-unit-testing/index.md +++ b/content/sonukapoor/posts/mastering-angular-unit-testing/index.md @@ -37,7 +37,7 @@ To make sure you can concentrate on the code that has to be tested, you must pro ### Disadvantages of not mocking -- You will be using the real implementation and are forced to mock all of its properties, methods, etc. You will end up in a rabbit hole, where you are suddenly mocking classes that several layer down the dependency tree. +- You will be using the real implementation and are forced to mock all of its properties, methods, etc. You will end up in a rabbit hole, where you are suddenly mocking classes that are several layers down the dependency tree. - You will have to declare the nested components and provide all of its dependencies - It takes longer for your tests to execute since the complete dependency tree must be resolved first. - The state of your tests might not be correct. From 017ed2db73ef00114d07c2a20649771196de513f Mon Sep 17 00:00:00 2001 From: Sonu Kapoor Date: Sat, 28 Dec 2024 22:15:24 -0500 Subject: [PATCH 3/3] fixup! [Blog Post] Mastering Angular Unit Testing: Best Practices and Tools --- .../sonukapoor/posts/mastering-angular-unit-testing/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/sonukapoor/posts/mastering-angular-unit-testing/index.md b/content/sonukapoor/posts/mastering-angular-unit-testing/index.md index 0f183d67f..6435540de 100644 --- a/content/sonukapoor/posts/mastering-angular-unit-testing/index.md +++ b/content/sonukapoor/posts/mastering-angular-unit-testing/index.md @@ -136,7 +136,7 @@ Some other useful properties that you may need to use in your tests from the ATL ### Setting providers -Use the [componentProviders](https://testing-library.com/docs/angular-testing-library/api#providers) to set the providers for your component. +Use the [componentProviders](https://testing-library.com/docs/angular-testing-library/api/#componentproviders) to set the providers for your component. If you need to set the providers at the module level, consider using the [providers](https://testing-library.com/docs/angular-testing-library/api/#providers) instead. ### Set @Input/@Output