のテストこれは私が書かれているコントローラクラスで、春/ Mockito - コントローラに
@RestController
public class TranslatorController {
@Autowired
TransResponse transResponse;
@Autowired
TransRequest transRequest;
@Autowired
TransWorker worker;
@PostMapping(path = "/trans", consumes = {
MediaType.APPLICATION_JSON_VALUE }, produces = {
MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<TransResponse> translate(@RequestBody TransRequest transRequest,
Errors error, HttpServletRequest request) {
logger.info("Starting translation::-->" + transRequest.getTerm());
String trans = worker.trans(transRequest.getText());
transResponse.setStatus("OK");
transResponse.setTrans(trans);
transResponse.setMessage("SUCCESS");
return new ResponseEntity<>(transResponse, HttpStatus.OK);
}
}
これは、このためのテストクラスで、成功
として渡す
@WebMvcTest(TranslatorController.class)
@ComponentScan("com.demo.service")
public class TranslatorControllerTest {
@Mock
TransRequest transRequest;
@Mock
Errors error;
@Mock
HttpServletRequest httpRequest;
@Mock
private TranslatorController controllerMock;
@Autowired
private MockMvc mockMvc;
@Mock
TransWorker worker;
@Mock
ResponseEntity<TransResponse> respEntity;
@Test
public void testTranslate() throws Exception {
Mockito.when(worker.trans(Mockito.anyString())).thenReturn("cold");
TransResponse response = new TransResponse();
response.setTrans("cold");
respEntity = new ResponseEntity<TransResponse>(response,
HttpStatus.OK);
Mockito.when(controllerMock.translate(transRequest, error, httpRequest)).thenReturn(respEntity);
respEntity = controllerMock.translate(transRequest, error, httpRequest);
assertEquals("cold", respEntity.getBody().getTrans());
}
}
そのしかし、私の質問は、私は正しくテストをしているのですか?それが正しくない場合。私が間違っているところで私を導くことができますか?
あなたがここでテストしている正確に何を思いますか?あなたはすべてを嘲笑してしまった!ヘック、書いたモックの半分は決して呼ばれない。あなたは実装をコメントアウトしてテストをパスすることができます。これはあなたが間違ったことをしたかなり良い兆候です。あなたはTDDを調べたいかもしれません。実装が間違っているか、まだ書かれていないときに合理的な理由でテストが失敗することを確認することが重要です。 – jonrsharpe
参考資料または例を提供してください – Umar