在我的SpringBootApplication
,我有一个bean
它注入(inject)另一个可选的bean(如下所示)
@Service
public class A {
//B is another @Component from one of the dependencies
private Optional<B> b;
...
...
}
我正在为 class A
编写集成测试我需要去哪里@MockBean
Optional<B> b
。然而自从Optional
是最后一个类,spring mockito 引发以下错误
Cannot mock/spy class java.util.Optional - final class
有办法解决这个问题吗?非常感谢任何帮助。
最佳答案
您可以使用Optional.of(b)
。
如果你使用带注释的mockito,那么你不能使用@InjectMocks
,因为mockito不会识别你的可选内容。您必须自己创建服务A
。像这样的事情:
@RunWith(MockitoJUnitRunner.class)
public class ATest {
@Mock
private B b;
private A a;
@Before
public void setup() {
a = new A(Optional.of(b));
}
}
关于java - 如何在 Spring Boot 中模拟可选 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60401256/