java - JMockit - 模拟第二次并忽略第一次

标签 java methods jmockit

我是 JMockit 的新手,想在第二次运行时模拟 java 方法,并在第一次调用它时忽略它。

示例,当下面的 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";
}

请帮忙。

最佳答案

您可以找到答案: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());
}

关于java - JMockit - 模拟第二次并忽略第一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40463003/

相关文章:

java - Java 中的图形数据库(Neo4J 除外)

java - HashMap 的键和值不是唯一的吗?

java - 使用 JMockit 模拟和验证 SLF4J

java - 需要帮助从另一个类调用方法

C++ - 在类方法中创建的变量范围

sbt - SBT 可以与 jMockit 一起使用吗?

java - 如何在 arquillian 服务部署中添加库?

java - 在java中创建对象,在编译时不知道类

Java 和类似的

python - 类内带下划线定义的变量