java是否列出服务模拟以随机返回所需值?
我有一个包含其他服务列表的服务
public class MyFrontService {
@Autowired
private Set<? extends MyAbstractService> allMyServices;
}
它运行集合中的所有服务。这是MyAbstractService的签名
public abstract class MyAbstractService {
boolean myMethod();
}
如果allMyServices中的任何服务返回false,则myFrontService返回false;只有当它的所有服务都返回true时,它才会返回true
我想知道如何使用Java8方式对MyFrontService进行单元测试。理想情况下,我可以指定集合中的许多服务返回true,而其他服务返回false
非常感谢任何帮助/提示
# 1 楼答案
这不是特定于Java8的,但在测试框架内,您可以创建扩展MyAbstractService的“伪”测试服务类,每个类都决定成功或失败。在这些测试类中,您可以重写方法以生成MyFrontService将要检查的特定结果
# 2 楼答案
您可以在服务的测试类中使用Mockito,可以尝试:
像这样,您创建mock(空对象,具有与您创建它所用的类相同的函数和属性,但除非您添加“when”,否则什么也不做),并且使用您定义的“when”,每次调用对象的myMethod(),它都会返回您在when()的thenReturn()中编写的任何内容。因此,每次为mockAbstractService1调用myMethod(),它都会返回true,而为mockAbstractService2调用myMethod则会返回false