【问题标题】:how to mock a local variable using mockito in java如何在java中使用mockito模拟局部变量
【发布时间】:2021-04-15 19:25:22
【问题描述】:
class Testing{

 @Autowired
 ClassA classa; 

public void test(){
    MyService service = classa.someMethod();
service.getID(); //service is always null on this line
   }
}

ClassA {
public MyService someMethod(){
return Myservice.builder().id(1l).build();
}
}

import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class MyService {
    private Long id;
    private Long externalId;
}

试图模拟“MyService 服务”它总是为空。 我们如何模拟它?

MyService 是一个构建器类,@Builder 来自 import lombok.Builder;包

【问题讨论】:

  • 类似于 when(classa.someMethod()).thenReturn();
  • 对不起...编辑了我的查询,必须将从服务获得的值传递给另一个方法。
  • 请发布完整的代码,以便人们能够在这种情况下提供帮助。
  • 这是代码...需要为测试方法写一个测试用例...

标签: java spring mockito powermock powermockito


【解决方案1】:
@ExtendWith(MockitoExtension.class)
class Testing{

    @Mock
    MyService service;

    public void test(){
        when(service.getID()).thenReturn(1);
        service.getID()
    }
}

【讨论】:

  • 您能否在答案中添加更多信息,说明其工作原理和原因
  • 对我不起作用....Myservice 也是一个构建器类
  • 我之前没有看到完整的代码。在这种情况下,它将类似于:@ExtendWith(MockitoExtension.class) class Testing{ @Mock ClassA classa; public void test(){ when(classa.someMethod()).thenReturn(Myservice.builder().id(1l).build()); MyService service = classa.someMethod(); service.getID() } }
【解决方案2】:

使用 Junit4 + Mockito

@RunWith(MockitoJUnitRunner.class)
public class ClassATest {
    @Mock
    ClassA classa;

    @Test
    public void test(){
        //Arrange
        MyService service = MyService.builder().id(1l).build();
        when(classa.someMethod()).thenReturn(service);
        
        //Act
        MyService returnedService = classa.someMethod();

        //Assert
        assertEquals(1L, returnedService.getId().longValue());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 2014-06-07
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多