如何使非模拟函数以正常行为运行



我是EasyMock的新手,我有一个这样的场景:

我为FolderUtils.ABC()创建了一个模拟。然而,在folderutils .类中,当我运行这个unitTest时,我将与ABC()一起使用许多方法。我只希望ABC()返回模拟值,否则它们将按照正常行为运行。我该怎么做呢?

FolderUtils contantsUnderTest = EasyMock.createMock(FolderUtils.class);   
EasyMock.expect(contantsUnderTest.ABC(EasyMock.notNull(UserKey.class))).andReturn("123").anyTimes();
ReflectionTestUtils.setField(field, "folderUtils", contantsUnderTest);
field.execute();

部分模拟确实可以解决您的问题。下面是一个例子:

FolderUtils contantsUnderTest = createMockBuilder(FolderUtils.class)
    .addMockedMethod("ABC")
    .createMock();
expect(contantsUnderTest.ABC(notNull(UserKey.class))).andReturn("123").anyTimes();
replay(contantsUnderTest);
assertEquals("123", contantsUnderTest.ABC(new UserKey()));
assertEquals("1", contantsUnderTest.ANOTHER_CONSTANT());
verify(contantsUnderTest);

对于这个实现:

public class FolderUtils {
    public String ABC(UserKey userKey) {
        return "1";
    }
    public String ANOTHER_CONSTANT() {
        return "1";
    }
}

最新更新