猿问

制作一个服务模拟列表以随机返回所需的值?

我有一个包含其他服务列表的服务


public class MyFrontService {

    @Autowired

    private Set<? extends MyAbstractService> allMyServices;

}

它运行集合中的所有服务。这是 MyAbstractService 的签名


public abstract class MyAbstractService {

     boolean myMethod();

}

如果 allMyServices 中的任何服务返回 false,则 myFrontService 返回 false;只有当它的所有服务都返回 true 时,它才会返回 true。


我想知道如何使用 Java 8 方式对 MyFrontService 进行单元测试。理想情况下,我可以指定一组服务返回 true,而其他服务返回 false。


非常感谢任何帮助/提示


猛跑小猪
浏览 140回答 2
2回答

偶然的你

这不是 Java 8 特定的,但在您的测试框架内,您可以创建扩展 MyAbstractService 的“假”测试服务类,每个类都确定性地成功或失败。在这些测试类中,您可以重写方法以生成 MyFrontService 将要检查的特定结果。

UYOU

您可以在服务的测试类中使用 Mockito,也许可以尝试:MyAbstractService&nbsp;mockAbstractService1&nbsp;=&nbsp;mock(MyAbstractService.class);when(mockAbstractService1.myMethod()).thenReturn(true);MyAbstractService&nbsp;mockAbstractService2&nbsp;=&nbsp;mock(MyAbstractService.class);when(mockAbstractService2.myMethod()).thenReturn(false);&nbsp;HashSet<MyAbstractService>&nbsp;abstractServices&nbsp;=&nbsp;new&nbsp;HashSet<MyAbstractService>();abstractServices.Add(mockAbstractService1);abstractServices.Add(mockAbstractService2);MyFrontService&nbsp;testFrontService&nbsp;=&nbsp;new&nbsp;MyFrontService();testFrontService.allMyServices&nbsp;=&nbsp;abstractServices;像这样,您创建 Mocks(空对象,具有与创建它的类相同的功能和属性,但除非您添加“何时”,否则什么都不做)并使用您定义的“何时”,每次 myMethod()当调用对象时,它会返回您在 when() 的 thenReturn() 中写入的任何内容。因此,每次为 mockAbstractService1 调用 myMethod() 时,它都会返回 true,而为 mockAbstractService2 调用 myMethod 时会返回 false。
随时随地看视频慕课网APP

相关分类

Java
我要回答