package Ġcom . co ach . fl ame . testing . component . base . mock Ċ Ċ import Ġio . mock k . Capt uring Slot Ċ import Ġio . mock k . Mock K Stub Scope Ċ import Ġio . mock k . every Ċ import Ġio . mock k . slot Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . Test Component Ċ import Ġorg . springframework . mail . Simple Mail Message Ċ import Ġorg . springframework . mail . jav am ail . Java Mail Sender Ċ Ċ @ Test Component Ċ class ĠMock Java Mail Sender Ġ: ĠMock Repository < Mock Java Mail Sender , ĠSimple Mail Message >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS END Ġ= Ġ" send " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS END _ THROW _ EXCEPTION Ġ= Ġ" send - throw - exception " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġemail Sender : ĠJava Mail Sender ĊĊĠĠĠ Ġprivate Ġfun Ġsend Email (): ĠPair < Mock K Stub Scope < Any ?, ĠAny ? >, ĠCapt uring Slot < Simple Mail Message >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemail Capture Ġ= Ġslot < Simple Mail Message >() ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( every Ġ{ Ġemail Sender . send ( capture ( email Capture )) Ġ}, Ġemail Capture ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreturns Bool ( f : Ġ() Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" returns Bool Ġdo est Ġnot Ġhave Ġany Ġmethod Ġimplemented !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreturns Multi ( f : Ġ() Ġ-> ĠList < Simple Mail Message ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" returns Multi Ġdo est Ġnot Ġhave Ġany Ġmethod Ġimplemented !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreturns ( f : Ġ() Ġ-> ĠSimple Mail Message ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" returns Ġdo est Ġnot Ġhave Ġany Ġmethod Ġimplemented !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcapture (): ĠCapt uring Slot < Simple Mail Message > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( mock Method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS END Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsend Email () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . first Ġreturns Ġresult . second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS END _ THROW _ EXCEPTION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsend Email () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . first Ġthrows ĠRuntimeException (" Something Ġis Ġwrong !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Missing Ġmock Ġmethod Ġname !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ