EasyMock的capture的应用
EasyMock的capture的使用
EasyMock里面的Capture接口提供了捕获函数调用参数的方法,在mock中,我们要验证参数传递参数的的情况。这个里面可以设置Capture的类型。
不废话了,直接上代码:
下面是一个service接口
最后上测试代码:
在这个里面,我们capture所有的函数调用的参数。
EasyMock里面的Capture接口提供了捕获函数调用参数的方法,在mock中,我们要验证参数传递参数的的情况。这个里面可以设置Capture的类型。
不废话了,直接上代码:
import java.util.Locale; public interface GeographicalDao { public void insertLocale(Locale locale); }
下面是一个service接口
import java.util.Locale; public class GeographicalService { private GeographicalDao geographicalDao; public void setGeographicalDao(GeographicalDao geographicalDao) { this.geographicalDao = geographicalDao; } public void saveGeographical(String language, String country) { geographicalDao.insertLocale(new Locale(language, country)); } }
最后上测试代码:
import java.util.List; import java.util.Locale; import org.easymock.Capture; import org.easymock.CaptureType; import org.easymock.EasyMock; import org.junit.Test; public class GeographicalServiceTest { @Test public void captureTest(){ String language = "us"; String country = "UK"; Capture<Locale> localCapture = new Capture<Locale>(CaptureType.ALL); GeographicalDao mock = EasyMock.createMock(GeographicalDao.class); mock.insertLocale(EasyMock.capture(localCapture)); EasyMock.expectLastCall().times(2); EasyMock.replay(mock); GeographicalService service = new GeographicalService(); service.setGeographicalDao(mock); service.saveGeographical(language, country); language = "zh"; country = "CN"; service.saveGeographical(language, country); EasyMock.verify(mock); List<Locale> locales = localCapture.getValues(); for(Locale local : locales){ System.out.println(local.getLanguage() + "_" + local.getCountry()); } }
在这个里面,我们capture所有的函数调用的参数。