@@ -519,6 +519,88 @@ describe('vi.fn() implementations', () => {
519519 expect ( mock ( ) ) . toBe ( undefined )
520520 } )
521521
522+ test ( 'vi.fn() with mockThrow' , async ( ) => {
523+ const mock = vi . fn ( )
524+ mock . mockThrow ( new Error ( 'error' ) )
525+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
526+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
527+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
528+ mock . mockReset ( )
529+ expect ( mock ( ) ) . toBe ( undefined )
530+ } )
531+
532+ test ( 'vi.fn(class) with mockThrow' , async ( ) => {
533+ const Mock = vi . fn ( class { } )
534+ Mock . mockThrow ( new Error ( 'error' ) )
535+ expect ( ( ) => new Mock ( ) ) . toThrow ( 'error' )
536+ expect ( ( ) => new Mock ( ) ) . toThrow ( 'error' )
537+ expect ( ( ) => new Mock ( ) ) . toThrow ( 'error' )
538+ Mock . mockReset ( )
539+ expect ( new Mock ( ) ) . toBeInstanceOf ( Mock )
540+ } )
541+
542+ test ( 'vi.fn() with mockThrow overriding original mock' , async ( ) => {
543+ const mock = vi . fn ( ( ) => 42 )
544+ mock . mockThrow ( new Error ( 'error' ) )
545+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
546+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
547+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
548+ mock . mockReset ( )
549+ expect ( mock ( ) ) . toBe ( 42 )
550+ } )
551+
552+ test ( 'vi.fn() with mockThrow overriding another mock' , async ( ) => {
553+ const mock = vi . fn ( ) . mockImplementation ( ( ) => 42 )
554+ mock . mockThrow ( new Error ( 'error' ) )
555+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
556+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
557+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
558+ mock . mockReset ( )
559+ expect ( mock ( ) ) . toBe ( undefined )
560+ } )
561+
562+ test ( 'vi.fn() with mockThrowOnce' , async ( ) => {
563+ const mock = vi . fn ( )
564+ mock . mockThrowOnce ( new Error ( 'error' ) )
565+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
566+ expect ( mock ( ) ) . toBe ( undefined )
567+ expect ( mock ( ) ) . toBe ( undefined )
568+ mock . mockThrowOnce ( new Error ( 'error' ) )
569+ mock . mockReset ( )
570+ expect ( mock ( ) ) . toBe ( undefined )
571+ } )
572+
573+ test ( 'vi.fn(class) with mockThrowOnce' , async ( ) => {
574+ const Mock = vi . fn ( class { } )
575+ Mock . mockThrowOnce ( new Error ( 'error' ) )
576+ expect ( ( ) => new Mock ( ) ) . toThrow ( 'error' )
577+ expect ( new Mock ( ) ) . toBeInstanceOf ( Mock )
578+ expect ( new Mock ( ) ) . toBeInstanceOf ( Mock )
579+ Mock . mockThrowOnce ( new Error ( 'error' ) )
580+ Mock . mockReset ( )
581+ expect ( new Mock ( ) ) . toBeInstanceOf ( Mock )
582+ } )
583+
584+ test ( 'vi.fn() with mockThrowOnce overriding original mock' , async ( ) => {
585+ const mock = vi . fn ( ( ) => 42 )
586+ mock . mockThrowOnce ( new Error ( 'error' ) )
587+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
588+ expect ( mock ( ) ) . toBe ( 42 )
589+ expect ( mock ( ) ) . toBe ( 42 )
590+ mock . mockReset ( )
591+ expect ( mock ( ) ) . toBe ( 42 )
592+ } )
593+
594+ test ( 'vi.fn() with mockThrowOnce overriding another mock' , async ( ) => {
595+ const mock = vi . fn ( ) . mockImplementation ( ( ) => 42 )
596+ mock . mockThrowOnce ( new Error ( 'error' ) )
597+ expect ( ( ) => mock ( ) ) . toThrow ( 'error' )
598+ expect ( mock ( ) ) . toBe ( 42 )
599+ expect ( mock ( ) ) . toBe ( 42 )
600+ mock . mockReset ( )
601+ expect ( mock ( ) ) . toBe ( undefined )
602+ } )
603+
522604 test ( 'vi.fn() with mockResolvedValue' , async ( ) => {
523605 const mock = vi . fn ( )
524606 mock . mockResolvedValue ( 42 )
0 commit comments