如何在SpringConfiguration中注入mock bean来创建另一个bean



我在单元测试方面有问题。下面是示例代码片段。我已经模拟了一个bean并注入到@configuration类中,并使用模拟的属性来创建另一个bean。

在下面的例子中,如果我检查,b.getSomething()会返回默认值,比如字符串为",int为0等。我不会得到模拟值。知道怎么做吗?

@Configuration
class A{
  @Autowired B b;
  @Bean
  public SomeClass someBean(){
   SomeClass clas = new SomeClass();
   clas.setSomething(b.getSomething());
   return clas;
   }
 }

 @ContextConfiguration(classes = { A.class}, loader = SpringockitoAnnotatedContextLoader.class)
class ATest{
@ReplaceWithMock
@Autowired
B b;
@Before
public void setup(){
Mockito.when(b.getSomething()).thenReturn("ABC");
}
}

这是我创建mock的方式。有一个返回Mock的Bean,并在需要的地方自动连接它。

@Autowired
MyClass myClassMock;
@Bean
public MyClass getMyClassMock(){
    MyClass mock = Mockito.mock(MyClass.class);
    Mockito.when(mock.getSomething()).thenReturn("ABC");
    return mock;
}

相关内容

  • 没有找到相关文章

最新更新