【问题标题】:How to make the non-mocked function run in normal behavior?如何使非模拟函数以正常行为运行?
【发布时间】:2015-09-14 08:30:47
【问题描述】:

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

我为 FolderUtils.ABC() 创建了一个模拟。但是,在 FolderUtils.class 中,当我运行这个 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();

【问题讨论】:

标签: unit-testing mocking easymock


【解决方案1】:

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

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";
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    相关资源
    最近更新 更多