java工厂类测试模拟实现列表

jum4pzuy  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(426)

我创建了一个工厂来提供 IMyProcessor 基于一些布尔标志。下面用我的两个实现填充Map。

@Component
public class MyProcessorFactory {

    private static final Map<String, IMyProcessor> processorServiceCache = new HashMap<>();

    @Value("${processor.async:true}")
    private boolean isAsync;

    public MyProcessorFactory(final List<IMyProcessor> processors) {
        for (IMyProcessor service : processors) {
            processorServiceCache.put(service.getType(), service);
        }
    }

    public IMyProcessor getInstance() {
        IMyProcessor processor = isAsync ? processorServiceCache.get("asynchronous") : processorServiceCache.get("synchronous");
        return processor;
    }
}

我现在正尝试使用junit5编写一个单元测试,但我很难设置实现列表:
我尝试了以下方法:

@ExtendWith(MockitoExtension.class)
class ProcessorFactoryTest {

    @InjectMocks
    private MyProcessorFactory myProcessorFactory;

    @Test
    void testAsyncIsReturned() {

    }

    @Test
    void testSyncisReturned() {}
}

我想基于布尔标志async true/false进行测试,返回正确的实现。
看看如何编写这样的测试用例会很有帮助。我将接口的实现作为构造注入自动连接到列表中,然后使用字符串键添加到Map中。
除了答案之外,我还愿意接受其他可能使测试更容易的想法/重构。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题