我想知道在这种情况下编写单元测试的最佳方法是什么:

MyApi:

@RestController
public class MyApi{

    @Autowired
    MyAction myAction;

    @PostMapping
    public ResponseEntity addAction(@ResponseBody MyDto myDto){
        return myAction.addAction(myDto);
    }
}


MyAction:

@Service
public class MyAction{

    @Autowired
    private MyClient myClient;

    public ResponseEntity<AuthenticationResponseDto> login(MyDto myDto{
        return ResponseEntity.ok(myClient.addClient(myDto));
    }

}


例如,是否必须添加构造函数?

谢谢

最佳答案

使用构造函数注入被认为是一个好习惯,但是,如果您不想使用它,则需要使用@Mock@InjectMocks。它使用反射,并且不需要定义构造函数。

@RunWith(MockitoJUnitRunner.class)
public class Test {

    @Mock
    private Client client;

    @InjectMocks
    private ServiceImpl plannerService = new ServiceImpl();

    @Test
    public void test() throws Exception {
        ....
    }
}

08-05 18:19