java - How to update code from Jmockit 1.1 to 1.9 to Access Real Instance? -


i trying update code jmockit 1.1 1.9 access real instance, seems unsuccessful below:

    java.lang.illegalargumentexception: matching real methods not found following mocks: copyofaccessrealinstancetest$1#getrealinstancename(string m, mockit.invocation inv)     @ copyofaccessrealinstancetest$1.<init>(copyofaccessrealinstancetest.java:28)     @ copyofaccessrealinstancetest.mockconstructor(copyofaccessrealinstancetest.java:28)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) 

i think due mock method:

        @mock(invocations = 1)         public string getrealinstancename(string m,invocation inv) 

-------------------------codes 1.9---------------------------------

public class copyofaccessrealinstancetest {       private constructor constructor = new constructor("");        @test     public void mockconstructor() {         // mockit.setupmock(constructor.class, new mockedconstructor());         mockup<constructor> mockup = new mockup<constructor>() {             //public constructor it;              @mock(invocations = 1)             public string getrealinstancename(string m,invocation inv)             {                            if ("real".equals(m)) {                     return inv.proceed(inv.getinvokedarguments());                     // return it.getrealinstancename(m);                 } else {                     return "mock";                 }             }         };          assert.assertequals("mock",                                 constructor.getrealinstancename(""));         assert.assertequals("real_m_real",             constructor.getrealinstancename("real"));     } } 

-----------------------code of jmock 1.1--------------------------------

public class accessrealinstancetest {     private constructor constructor = new constructor("");      @test     public void mockconstructor() {         mockit.setupmock(constructor.class, new mockedconstructor());         assert.assertequals("real_m_real",                    constructor.getrealinstancename("real"));     }      public static class mockedconstructor {         public constructor it;         @mock(reentrant = true)//reentrant allow access real instance         public string getrealinstancename(string m) {             if ("real".equals(m)) {                 return it.getrealinstancename(m);             } else {                 return "mock";             }         }     } } 

class mocked:

public class constructor {     private string memberid;        public constructor(string memberid) {           this.memberid = memberid;       }        public string getrealname() {           return "real_" + this.memberid;       }        public string getrealinstancename(string m) {         return "real_m_" + m;     } } 

it resolved. thank rogério , sean!

note api documentation says invocation parameter must first parameter in mock method. – rogério


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -