@@ -45,154 +45,34 @@ export const mockedGetRegistryV01Servers = AutoAPIMock<GetRegistryV01ServersResp
4545
4646### Overriding in Tests
4747
48- Use ` .override() ` to customize responses for specific tests :
48+ Use ` .override() ` for type-safe response modifications, or ` .overrideHandler() ` for full control (errors, network failures) :
4949
5050``` typescript
5151import { HttpResponse } from " msw" ;
5252import { mockedGetRegistryV01Servers } from " @mocks/fixtures/registry_v0_1_servers/get" ;
5353
54- describe (" ServerList" , () => {
55- it (" shows empty state when no servers" , async () => {
56- // Override to return empty list for this test only (type-safe)
57- mockedGetRegistryV01Servers .override (() => ({
58- servers: [],
59- metadata: { count: 0 },
60- }));
61-
62- render (<ServerList />);
63- expect (screen .getByText (" No servers available" )).toBeVisible ();
64- });
65-
66- it (" shows error state on API failure" , async () => {
67- // Use overrideHandler for error responses
68- mockedGetRegistryV01Servers .overrideHandler (() =>
69- HttpResponse .json ({ error: " Server error" }, { status: 500 })
70- );
71-
72- render (<ServerList />);
73- expect (screen .getByText (" Failed to load servers" )).toBeVisible ();
74- });
75-
76- it (" shows servers from default fixture" , async () => {
77- // No override - uses default fixture data
78- render (<ServerList />);
79- expect (screen .getByText (" AWS Nova Canvas" )).toBeVisible ();
80- });
81- });
82- ```
83-
84- ### API Reference
85-
86- ``` typescript
87- interface AutoAPIMockInstance <T > {
88- // The default fixture data
89- defaultValue: T ;
90-
91- // Override the response data (type-safe, preferred)
92- override(fn : (data : T , info : ResponseResolverInfo ) => T ): this ;
93-
94- // Override the full handler (for errors, network failures, invalid data)
95- overrideHandler(fn : (data : T , info : ResponseResolverInfo ) => Response ): this ;
96-
97- // Define a reusable named scenario
98- scenario(name : string , fn : (instance : AutoAPIMockInstance <T >) => AutoAPIMockInstance <T >): this ;
99-
100- // Activate a named scenario for the current test
101- activateScenario(name : string ): this ;
102-
103- // Reset to default behavior (called automatically before each test)
104- reset(): this ;
105-
106- // MSW handler to use in handler registration. Respects overrides and scenarios.
107- generatedHandler: HttpResponseResolver ;
108- }
109- ```
110-
111- ### Choosing Between ` override ` and ` overrideHandler `
112-
113- Use ** ` override ` ** (type-safe, preferred) when you just want to change the response data:
114-
115- ``` typescript
116- // Simple - just return the data you want
54+ // Type-safe data override
11755mockedGetRegistryV01Servers .override (() => ({
11856 servers: [],
11957 metadata: { count: 0 },
12058}));
12159
122- // With default data modifications
60+ // Modify default data
12361mockedGetRegistryV01Servers .override ((data ) => ({
12462 ... data ,
12563 servers: data .servers ?.slice (0 , 3 ),
12664}));
127- ```
128-
129- Use ** ` overrideHandler ` ** (full control) when you need:
130- - Custom HTTP status codes (errors)
131- - Non-JSON responses
132- - Network errors
133- - Invalid/malformed data for edge case testing
13465
135- ``` typescript
136- // Return error status
66+ // Error responses (use overrideHandler)
13767mockedGetRegistryV01Servers .overrideHandler (() =>
13868 HttpResponse .json ({ error: " Server error" }, { status: 500 })
13969);
14070
14171// Network error
14272mockedGetRegistryV01Servers .overrideHandler (() => HttpResponse .error ());
143-
144- // Testing invalid data shapes
145- mockedGetRegistryV01Servers .overrideHandler (() =>
146- HttpResponse .json ({ servers: [{ server: null }] })
147- );
14873```
14974
150- ### Automatic Reset
151-
152- Overrides are automatically reset before each test via ` beforeEach() ` in ` src/mocks/test.setup.ts ` . You don't need to manually reset mocks between tests.
153-
154- ### Using Default Data in Overrides
155-
156- Access the default fixture data to make partial modifications:
157-
158- ``` typescript
159- // With override (type-safe, preferred)
160- mockedGetRegistryV01Servers .override ((data ) => ({
161- ... data ,
162- servers: data .servers ?.slice (0 , 1 ),
163- }));
164-
165- // With overrideHandler (when you need the Response wrapper)
166- mockedGetRegistryV01Servers .overrideHandler ((data ) =>
167- HttpResponse .json ({
168- ... data ,
169- servers: data .servers ?.slice (0 , 1 ),
170- })
171- );
172- ```
173-
174- ### Accessing Request Info
175-
176- Both methods receive request info as the second parameter:
177-
178- ``` typescript
179- // With override (type-safe)
180- mockedGetRegistryV01Servers .override ((data , info ) => {
181- const cursor = new URL (info .request .url ).searchParams .get (" cursor" );
182- return cursor === " page2"
183- ? { servers: [], metadata: { count: 0 } }
184- : data ;
185- });
186-
187- // With overrideHandler (when you need different status codes based on request)
188- mockedGetRegistryV01Servers .overrideHandler ((data , info ) => {
189- const authHeader = info .request .headers .get (" Authorization" );
190- if (! authHeader ) {
191- return HttpResponse .json ({ error: " Unauthorized" }, { status: 401 });
192- }
193- return HttpResponse .json (data );
194- });
195- ```
75+ Overrides are automatically reset before each test via ` beforeEach() ` in ` src/mocks/test.setup.ts ` .
19676
19777### Reusable Scenarios
19878
0 commit comments