EasyMock : static method and 'missing behavior definition for the preceding method call'? -


i have following core class messagesutil, returns message string specific bundle based on locale - getmessage() methods static

public class messagesutil { ..      public static string getmessage(httpservletrequest request, string key, string bundle) {         messageresources resources = (messageresources)request.getattribute(bundle);         string message = resources.getmessage((locale)request.getsession().getattribute("org.apache.struts.action.locale"), key);         return message;     } } 

i'm trying write unit test coverage business class calls messageutils object. same test code below shows how i'm mocking request , session, return messageresources , specific message keys

import com.infonova.easymock.annotation.mock; import org.apache.struts.util.messageresources; import org.junit.assert; import org.junit.test;  import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpsession; import java.util.locale;  import static org.easymock.easymock.expect;  public class mappingsutilseasymocktest {      @mock     private httpservletrequest request;      @mock     private httpsession session;      @mock     private messageresources messageresources;      @test     public void mockmessagesutiltests() {          string key = "ordermanagement.error.general";          expect(request.getattribute("customermanagementresources")).andreturn(messageresources);         // locale         locale locale = locale.english;         expect(session.getattribute("org.apache.struts.action.locale")).andreturn(locale);         // locale specific string message resource         expect(messageresources.getmessage(locale, key)).andreturn("this_is_the_result");          assert.assertequals(messagesutil.getmessage(                         request, key, customermanagementconstants.bundle_name),                 "this_is_the_result");     } } 

i exception

java.lang.illegalstateexception: missing behavior definition preceding method call: httpservletrequest.getattribute("customermanagementresources") usage is: expect(a.foo()).andxxx()     @ org.easymock.internal.mockinvocationhandler.invoke(mockinvocationhandler.java:42)     @ org.easymock.internal.objectmethodsfilter.invoke(objectmethodsfilter.java:85)     @ com.sun.proxy.$proxy10.getsession(unknown source) 

but setting 'getattribute("customermanagementresources")' field in test setup.

note - have tried adding

replay(); 

before call target method there no difference.

so after work, easymock exception message says 'preceding' can considered mean 'next' method call. in case

(locale)request.getsession() 

was next call class looking mock. add expect test resolved issue

expect(request.getsession()).andreturn(session).anytimes(); 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -