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
Post a Comment