Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 前面的方法调用缺少行为定义:用法是:expect(a.foo()).andXXX()_Java_Junit_Easymock - Fatal编程技术网

Java 前面的方法调用缺少行为定义:用法是:expect(a.foo()).andXXX()

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

我是Junit的新手,遇到了一个问题。任何帮助都将不胜感激

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);

嗨,谢谢你的帮助。。