Admittedly, this is a bit of a weird test case, but it is a problem that I have run into. I have a class that takes a function as a parameter in the constructor. I would like to know if the function that was passed was called. Here is an example:
class TestClassMock extends Mock implements RealClass {
RealClass _real;
TestClassMock() {
_real = new RealClass();
when(callsTo("myNamedFunction")).alwaysCall(_real.myNamedFunction);
}
}
class RealClass {
String _name = "RealClass";
Function myNamedFunction;
RealClass() {
myNamedFunction = _theNamedFunction;
}
String _theNamedFunction() {
return _name;
}
}
class ClassThatCallsRealClass {
ClassThatCallsRealClass(Function func) {
func();
}
}
//The test
TestClassMock testClassMock = new TestClassMock();
ClassThatCallsRealClass caller = new ClassThatCallsRealClass(testClassMock.myNamedFunction);
testClassMock.getLogs(callsTo("myNamedFunction")).verify(happenedOnce);
, , ClassThatCallsRealClass . ( RealClass).myNamedFunction, , , _theNamedFunction RealClass. , RealClass myNamedFunction RealClass myNamedFunction, , , . , , .
?