具有定义为:
的接口public interface EventListener {
void onEvent(String evt);
}
在内联实例化的地方:
// a singleton object
class EventLoger {
public EventListener listener;
void registerListener(EventListener l) {
listener = l;
}
void doLog(String evt) {
listener.onEvent(evt);
}
...
}
class TheManager () {
public void setup() {
EventLoger.getInstance(context).registerListener(new EventListener() {
@Override
public onEvent(String evt) {
//......
}
}
}
public void doSomeThing(String str) {
...
EventLoger.getInstance(context).doLog(str);
}
......
}
想做verify { theEvtListener.onEvent(refEq("test")) }
,如何使用mockk模拟new EventListener()
的这个实例?
试图做:
@Test
fun test_WhenOnEventIsCalled() {
// not sure how to mock the lisnter
//val evtLisnter: EventListener = mockk(). //??????
//every {} return theEvtListener. // ???
val mgr = mockk<TheManager>()
mgr.setup()
mgr.doSomeThing("test") // it will call the listener.onEvent("test")
verify { theEvtListener.onEvent(refEq("test")) }
}