我可以在Spring Boot中模拟Optional <>的bean吗?
来源:爱站网时间:2021-09-16编辑:网友分享
在我的SpringBootApplication中,我有一个Bean,它注入另一个可选的Bean(如下所示)@Service公共类A {// B是依赖项私有中的另一个@Component ...
问题描述
在我的SpringBootApplication
中,有一个bean
注入了另一个可选bean(如下所示)
@Service
public class A {
//B is another @Component from one of the dependencies
private Optional b;
...
...
}
我正在为class A
@MockBean
编写集成测试。但是,由于Optional b
是最后一堂课,因此Spring Mockito引发以下错误
无法模拟/间谍类java.util.Optional-期末班
有没有解决的办法?非常感谢您的帮助。
思路一:
您可以使用Optional
。
如果您使用带有注释的嘲笑,那么您将无法使用Optional.of(b)
,因为您的可选选项不会被嘲弄为已知。您必须自己创建服务@InjectMocks
。像这样的东西:
A
思路二:
您实际上应该模拟实际的bean,并使用模拟的bean自动连接@RunWith(MockitoJUnitRunner.class)
public class ATest {
@Mock
private B b;
private A a;
@Before
public void setup() {
a = new A(Optional.of(b));
}
}
Optional