Java 前面的方法调用缺少行为定义:用法是:expect(a.foo()).andXXX()
我是Junit的新手,遇到了一个问题。任何帮助都将不胜感激Java 前面的方法调用缺少行为定义:用法是:expect(a.foo()).andXXX(),java,junit,easymock,Java,Junit,Easymock,我是Junit的新手,遇到了一个问题。任何帮助都将不胜感激 public void testGuaranteedRates() throws Exception { ParticipantSummary summary = new ParticipantSummary(); EasyMock.expect( iRequest.getPIN() ).andReturn( "1060720" ); DateFormat dateFormat = new SimpleDat
public void testGuaranteedRates() throws Exception
{
ParticipantSummary summary = new ParticipantSummary();
EasyMock.expect( iRequest.getPIN() ).andReturn( "1060720" );
DateFormat dateFormat = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" );
Date date = new Date();
EasyMock.expect( iRequest.getTradeDate() ).andReturn( date ).anyTimes();
EasyMock.expect( control.prepareServiceRequest( iRequest ) ).andReturn( rtvint );
EasyMock.replay();
ems.replayAll();
}
方法prepareServiceRequest()如下所示
org.tiaa.transact.generated.jaxb.inquiry.RetrieveRetirementVintages prepareServiceRequest(InquiryRequest inquiryRequest)
{
logger.debug( "prepareServiceRequest enter" );
org.tiaa.transact.generated.jaxb.inquiry.ObjectFactory objectFactory = new org.tiaa.transact.generated.jaxb.inquiry.ObjectFactory();
org.tiaa.transact.generated.jaxb.inquiry.RetrieveRetirementVintages retirementVintages = objectFactory.createRetrieveRetirementVintages();
if( ( inquiryRequest ) != null )
{
if( ( inquiryRequest.getPIN() ) != null )
{
retirementVintages.setPIN( inquiryRequest.getPIN() );
}
if( ( inquiryRequest.getTradeDate() != null ) )
{
Calendar cal = new GregorianCalendar();
//retirementVintages.setTradeDate( TPDateUtil.convertDatetoXMLGregorianCalendar( inquiryRequest.getTradeDate() ) );
//retirementVintages.setTradeDate(( inquiryRequest.getTradeDate() );
}
}
logger.debug( "prepareServiceRequest exit" );
return retirementVintages;
}
当我尝试测试它时,我得到一个错误,如下所示
java.lang.IllegalStateException:前面的方法调用缺少行为定义:
queryrequest.getPIN()
如果这里有什么问题,请告诉我。您在测试的方法中调用了两次
inquiryRequest.getPin()
,但您只在一次调用中添加了模拟行为。因此,改为:
EasyMock.expect( iRequest.getPIN() ).andReturn( "1060720" ).anyTimes();
或者将实现更改为将
inquiryRequest.getPin()
存储在变量中,这会让您更进一步。假设iRequest
和control
是模拟对象,您需要重放它们
因此,不是:
EasyMock.replay();
试试这个:
EasyMock.replay(iRequest);
EasyMock.replay(control);
嗨,谢谢你的帮助。。