当前位置: 首页 > 知识库问答 >
问题:

如何在SpringConfiguration中注入模拟bean以创建另一个bean。?

金嘉言
2023-03-14

我对单元测试有问题。下面是示例代码片段。我模拟了一个bean,并将其注入@configuration类,然后使用mocked属性创建另一个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");
}

}

共有1个答案

汪晨
2023-03-14

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

@Autowired
MyClass myClassMock;

@Bean
public MyClass getMyClassMock(){
    MyClass mock = Mockito.mock(MyClass.class);
    Mockito.when(mock.getSomething()).thenReturn("ABC");
    return mock;
}
 类似资料:
  • 目前,我遇到了一些莫基托图书馆的麻烦...更确切地说,我无法将userRepository bean注入到我的模拟服务中。对于依赖注入,我使用的是spring boot。下面是一些代码示例: 在我的测试方法中,我想在用户得到更新之前跳过验证和令牌创建。 因此,当我调用updateUser方法时,问题出现在我的测试方法中,它失败了,因为我的userRepository没有注入(NullPointer

  • 当我测试我的Spring boot服务时,我不知道如何注入一个@Autowired bean。 My bean(Spring填充@Value fromapplication.yml): 我的 api: 这很好,int值是正确的。这是我的测试: 在这个测试评论中,我如何通过@Autowired进入ListenerApi? 谢谢。

  • 我有两个bean类--乡村和城市。我需要在乡村班保留城市名单。另外,当我设置城市信息时,我需要设置国家名称,所以在城市类中也需要国家。怎么做?以下是代码: country.java

  • 问题内容: 我想将Mockito模拟对象注入到Spring(3+)bean中,以进行JUnit的单元测试。我的bean依赖项当前是通过在私有成员字段上使用注释来注入的。 我考虑过使用,但是我希望注入的bean实例实际上是一个代理,因此没有声明目标类的私有成员字段。我不希望为依赖项创建一个公共的setter,因为我将纯粹出于测试目的而修改接口。 我遵循了Spring社区提供的一些建议,但是未创建该模

  • spring日志中的info消息显示: 示例: 下面有一个简单的示例,可以使用。这里,Bar是嵌套在Foo内部的,我需要模拟Bar进行测试: 现在对于测试来说,假设我想注入一个mockbar而不是真正的bar。我如何在下面的测试类中实现这一点? 实际测试用例:

  • 在spring initialize之后,我希望将第二个bean的属性值合并到第一个bean中。请告知spring是否提供了动态注入值的类。