2016-11-07 103 views
0

我是JMockit的新手,想要在第二次運行時模擬一個java方法,並在第一次被調用時忽略它。JMockit - 第二次模擬並忽略第一次

示例我想在下面的代碼中使用「second time」返回字符串並執行一些其他操作時,使用runningMethod()。

@Mock publicMethod() 
{ 
//do something if calling runningMethod() 2nd time. 
} 


int count = 1; 
public String runningMethod() 

{ 

if (count == 1) return "first time"; 

if (count == 2) return "second time"; 

i++; 

return "some answers"; 
} 

請協助。

回答

0

你可以找到答案:http://www.baeldung.com/jmockit-expectations

但這裏是從該職位相關代碼:

public interface ExpectationsCollaborator{ 
    String methodReturnsString(); 
    int methodReturnsInt(); 
} 

@Test 
public void testResultAndReturns(@Mocked Foo mock){ 
    new StrictExpectations() {{ 
     mock.methodReturnsString(); 
     result = "foo"; 
     result = new Exception(); 
     result = "bar"; 
     mock.methodReturnsInt(); result = new int[] { 1, 2, 3 }; 
     mock.methodReturnsString(); returns("foo", "bar"); 
     mock.methodReturnsInt(); result = 1; 
    }}; 

    assertEquals("Should return foo", "foo", mock.methodReturnsString()); 
    try { 
     mock.methodReturnsString(); 
    } catch (Exception e) { } 

    assertEquals("Should return bar", "bar", mock.methodReturnsString()); 
    assertEquals("Should return 1", 1, mock.methodReturnsInt()); 
    assertEquals("Should return 2", 2, mock.methodReturnsInt()); 
    assertEquals("Should return 3", 3, mock.methodReturnsInt()); 
    assertEquals("Should return foo", "foo", mock.methodReturnsString()); 
    assertEquals("Should return bar", "bar", mock.methodReturnsString()); 
    assertEquals("Should return 1", 1, mock.methodReturnsInt()); 
} 
相關問題