java - 注入(inject) Autowiring 变量

标签 java spring unit-testing

我有以下服务类别:


    @Component
    public class ABC {


      @Autowired private SomeClass assumeRoles; 

      @Override
      public @NotNull Optional<Something> translate(int id) {
             // Some Code
             SomeClass result = assumeRoles.getRole(id);

      }
   }

现在我想为我的类编写 Junit,我不希望 Role.getRole(id) 被调用,而不是我想用一些虚拟的东西来模拟这个函数调用值。

那我可以这样做吗?

我的 Junit 类为

    @RunWith(MockitoJUnitRunner.class)
    public class ABCTest {

      @InjectMocks
      private ABC test = new ABC();

      @Mock
      private SomeClass assumeRoles;


      @Test
      public void testTranslate() {

        ABC result =  test.translate(id);    
      }

    }

最佳答案

您已经将 SomeClass ShouldRoles 标记为 @Mock,您可以如下模拟 Role.getRole(id); 语句。

Mockito.when(assumeRoles.getRole(Mockito.any(id))).thenReturn(someResult);

我在做出一些假设后回答了这个问题,我建议您改进提供的代码片段,并提供正确的变量和类名称。

关于java - 注入(inject) Autowiring 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58706355/

相关文章:

java - 将 Spring Rest Controller 映射到没有 Servlet 上下文的路径

spring - 正在测试Grails测试应用程序更新功能并测试打印出问题

java - Spring - 等待rabbitmq消息监听器完成

java - 将字符串与我的 ArrayList 进行比较

java - ARCore:如何检测光照不足?

java - Hibernate事务结束示例

c# - TestMethod 生成错误 CS0201

reactjs - 如何使用 jest 和 RTL 模拟来自 react 组件的异步操作调用

unit-testing - 如何在读取响应正文时强制出错

java - 捕获错误(而不是异常)有什么意义,因为程序不会由 JVM 启动