@@ -318,6 +318,7 @@ test('spy functions can be bound', (t) => {
318
318
assert . strictEqual ( sum . mock . restore ( ) , undefined ) ;
319
319
assert . strictEqual ( sum . bind ( 0 ) ( 2 , 11 ) , 13 ) ;
320
320
} ) ;
321
+
321
322
test ( 'mocks prototype methods on an instance' , async ( t ) => {
322
323
class Runner {
323
324
async someTask ( msg ) {
@@ -345,6 +346,13 @@ test('mocks prototype methods on an instance', async (t) => {
345
346
assert . strictEqual ( call . target , undefined ) ;
346
347
assert . strictEqual ( call . this , obj ) ;
347
348
349
+ const obj2 = new Runner ( ) ;
350
+ // Ensure that a brand new instance is not mocked
351
+ assert . strictEqual (
352
+ obj2 . someTask . mock ,
353
+ undefined
354
+ ) ;
355
+
348
356
assert . strictEqual ( obj . someTask . mock . restore ( ) , undefined ) ;
349
357
assert . strictEqual ( await obj . method ( msg ) , msg ) ;
350
358
assert . strictEqual ( obj . someTask . mock , undefined ) ;
@@ -381,6 +389,42 @@ test('spies on async static class methods', async (t) => {
381
389
assert . strictEqual ( Runner . someTask . mock , undefined ) ;
382
390
} ) ;
383
391
392
+ test ( 'given null to a mock.method it throws a invalid argument error' , ( t ) => {
393
+ assert . throws ( ( ) => t . mock . method ( null , { } ) , / E R R _ I N V A L I D _ A R G _ T Y P E / ) ;
394
+ } ) ;
395
+
396
+ test ( 'spy functions can be used on classes inheritance' , ( t ) => {
397
+ class A {
398
+ static someTask ( msg ) {
399
+ return msg ;
400
+ }
401
+ static method ( msg ) {
402
+ return this . someTask ( msg ) ;
403
+ }
404
+ }
405
+ class B extends A { }
406
+ class C extends B { }
407
+
408
+ const msg = 'ok' ;
409
+ assert . strictEqual ( C . method ( msg ) , msg ) ;
410
+
411
+ t . mock . method ( C , C . someTask . name ) ;
412
+ assert . strictEqual ( C . someTask . mock . calls . length , 0 ) ;
413
+
414
+ assert . strictEqual ( C . method ( msg ) , msg ) ;
415
+
416
+ const call = C . someTask . mock . calls [ 0 ] ;
417
+
418
+ assert . deepStrictEqual ( call . arguments , [ msg ] ) ;
419
+ assert . strictEqual ( call . result , msg ) ;
420
+ assert . strictEqual ( call . target , undefined ) ;
421
+ assert . strictEqual ( call . this , C ) ;
422
+
423
+ assert . strictEqual ( C . someTask . mock . restore ( ) , undefined ) ;
424
+ assert . strictEqual ( C . method ( msg ) , msg ) ;
425
+ assert . strictEqual ( C . someTask . mock , undefined ) ;
426
+ } ) ;
427
+
384
428
test ( 'mocked functions report thrown errors' , ( t ) => {
385
429
const testError = new Error ( 'test error' ) ;
386
430
const fn = t . mock . fn ( ( ) => {
0 commit comments