我想知道在这种情况下编写单元测试的最佳方法是什么:
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 {
....
}
}