File tree Expand file tree Collapse file tree 3 files changed +24
-3
lines changed
packages/vitest/src/integrations Expand file tree Collapse file tree 3 files changed +24
-3
lines changed Original file line number Diff line number Diff line change @@ -417,6 +417,15 @@ expect(mocked.simple()).toBe('mocked')
417
417
expect (mocked .nested .method ()).toBe (' mocked nested' )
418
418
```
419
419
420
+ Just like ` vi.mock() ` , you can pass ` { spy: true } ` as a second argument to keep function implementations:
421
+
422
+ ``` ts
423
+ const spied = vi .mockObject (original , { spy: true })
424
+ expect (spied .simple ()).toBe (' value' )
425
+ expect (spied .simple ).toHaveBeenCalled ()
426
+ expect (spied .simple .mock .results [0 ]).toEqual ({ type: ' return' , value: ' value' })
427
+ ```
428
+
420
429
### vi.isMockFunction
421
430
422
431
- ** Type:** ` (fn: Function) => boolean `
Original file line number Diff line number Diff line change @@ -292,12 +292,17 @@ export interface VitestUtils {
292
292
*
293
293
* expect(mocked.simple()).toBe('mocked')
294
294
* expect(mocked.nested.method()).toBe('mocked nested')
295
+ *
296
+ * const spied = vi.mockObject(original, { spy: true })
297
+ * expect(spied.simple()).toBe('value')
298
+ * expect(spied.simple).toHaveBeenCalled()
299
+ * expect(spied.simple.mock.results[0]).toEqual({ type: 'return', value: 'value' })
295
300
* ```
296
301
*
297
302
* @param value - The object to be mocked
298
303
* @returns A deeply mocked version of the input object
299
304
*/
300
- mockObject : < T > ( value : T ) => MaybeMockedDeep < T >
305
+ mockObject : < T > ( value : T , options ?: MockOptions ) => MaybeMockedDeep < T >
301
306
302
307
/**
303
308
* Type helper for TypeScript. Just returns the object that was passed.
@@ -637,8 +642,8 @@ function createVitest(): VitestUtils {
637
642
return _mocker ( ) . importMock ( path , getImporter ( 'importMock' ) )
638
643
} ,
639
644
640
- mockObject < T > ( value : T ) {
641
- return _mocker ( ) . mockObject ( { value } ) . value
645
+ mockObject < T > ( value : T , options ?: MockOptions ) {
646
+ return _mocker ( ) . mockObject ( { value } , undefined , options ?. spy ? 'autospy' : 'automock' ) . value
642
647
} ,
643
648
644
649
// this is typed in the interface so it's not necessary to type it here
Original file line number Diff line number Diff line change @@ -219,6 +219,13 @@ describe('testing vi utils', () => {
219
219
expect ( mocked . simple ( ) ) . toBe ( 'mocked' )
220
220
expect ( mocked . nested . method ( ) ) . toBe ( 'mocked nested' )
221
221
222
+ const spied = vi . mockObject ( original , { spy : true } )
223
+ expect ( spied . simple ( ) ) . toBe ( 'value' )
224
+ expect ( spied . simple ) . toHaveBeenCalled ( )
225
+ expect ( spied . simple . mock . results ) . toEqual ( [ { type : 'return' , value : 'value' } ] )
226
+ spied . simple . mockReturnValue ( 'still mocked' )
227
+ expect ( spied . simple ( ) ) . toBe ( 'still mocked' )
228
+
222
229
class OriginalClass {
223
230
constructor ( ) {
224
231
throw new Error ( 'should be mocked!' )
You can’t perform that action at this time.
0 commit comments