📄 groovymock.java
字号:
package groovy.mock;import groovy.lang.GroovyObject;import groovy.lang.Closure;import groovy.lang.GroovyObjectSupport;import com.mockobjects.Verifiable;import com.mockobjects.dynamic.*;/** * * @author Joe Walnes * @author Chris Stevenson * @version $Revision: 1.4 $ */public class GroovyMock extends GroovyObjectSupport implements Verifiable { private CallBag calls = new CallBag(); private CallFactory callFactory = new DefaultCallFactory(); private Mock mock = new Mock(I.class); interface I { } private GroovyObject instance = new GroovyObjectSupport() { public Object invokeMethod(String name, Object args) { return callMethod(name, args); } }; public Object invokeMethod(String name, Object args) { if (name.equals("verify")) { verify(); } else { expectMethod(name, args); } return null; } public GroovyObject getInstance() { return instance; } public static GroovyMock newInstance() { return new GroovyMock(); } private void expectMethod(String name, Object args) { ConstraintMatcher constraintMatcher = createMatcher(args); calls.addExpect( callFactory.createCallExpectation( callFactory.createCallSignature(name, constraintMatcher, callFactory.createVoidStub()))); } private ConstraintMatcher createMatcher(Object args) { if(args.getClass().isArray()) { Object argArray[] = (Object[]) args; if (argArray[0] instanceof Closure) { Closure closure = (Closure) argArray[0]; return C.args(new ClosureConstraintMatcher(closure)); } } return C.args(C.eq(args)); } private Object callMethod(String name, Object args) { try { return calls.call(mock, name, new Object[] { args }); } catch (Throwable throwable) { throw new RuntimeException(throwable); } } public void verify() { calls.verify(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -