1. JMOCK簡介
2. JMOCK原理
2.1 capture expection
2.2 capture invokation
3. 擴展JMOCK
package com.amazon.oih.fasturl.config.oihscope;
import java.util.*;
import oracle.net.aso.p;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
public class JMockExt {
interface Provider{
Object get();
}
public static class ReturnInstanceAction implements Action {
private Provider provider;
public ReturnInstanceAction(Provider p ){
this.provider = p;
}
@Override
public void describeTo(Description description) {
description.appendText(" return a instance created by " + p.class.getSimpleName());
}
@Override
public Object invoke(Invocation invocation) throws Throwable {
return provider.get();
}
}
public static class ReturnInstancesAction implements Action {
private Provider provider;
private int num;
public ReturnInstancesAction (Provider p ,int num){
this.provider = p;
this.num = num;
}
@Override
public void describeTo(Description description) {
description.appendText(" return "+ num +" instances created by " + p.class.getSimpleName());
}
@Override
public Object invoke(Invocation invocation) throws Throwable {
List list = new ArrayList();
int i= 0;
while(i++ < num){
list.add(provider.get());
}
return list;
}
}
public static class Expectations extends org.jmock.Expectations{
public static Action returnInstance(Provider provider) {
return new ReturnInstanceAction(provider);
}
public static Action returnInstances(Provider provider, int num) {
return new ReturnInstancesAction(provider, num);
}
public static Action returnInstances(Provider provider) {
return new ReturnInstancesAction(provider, 1);
}
}
}