Java Mockito-服务中的模拟自动连线存储库
我正在试着从一个控制器写一个测试。 控制器调用调用自动连线存储库的服务 这是我的课Java Mockito-服务中的模拟自动连线存储库,java,spring,unit-testing,testing,mockito,Java,Spring,Unit Testing,Testing,Mockito,我正在试着从一个控制器写一个测试。 控制器调用调用自动连线存储库的服务 这是我的课 @RunWith(MockitoJUnitRunner.class) public class AdminDestinationControllerTest { private final PTUser user = new PTUser(); private MockMvc mockMvc; @InjectMocks private AdminDestinationController adminDesti
@RunWith(MockitoJUnitRunner.class)
public class AdminDestinationControllerTest {
private final PTUser user = new PTUser();
private MockMvc mockMvc;
@InjectMocks
private AdminDestinationController adminDestinationController;
@Mock private RoutingDestinationServiceImpl routingDestinationService;
@Mock private PTRoutingDestinationRepository destinationRepository;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(adminDestinationController).build();
}
@Test
public void setCost_UnknownCode() throws Exception {
when(routingDestinationService.setCost(Mockito.anyString(), Mockito.any())).thenCallRealMethod();
when(destinationRepository.setCost(Mockito.anyString(), Mockito.any())).thenReturn(Optional.empty());
mockMvc.perform(post("/admin/destinations/cost").content("{\"code\":\"99999\", \"cost\":\"2\"}").contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isNotFound());
}
}
但在服务中,存储库为空。
你知道我该怎么做吗
谢谢好吧,该服务也是一个
Mock
,Mock中没有注入。您必须模拟从AdminDestinationController
调用的RoutingDestinationServiceImpl
中的方法。只是不要调用模拟服务的实际方法。并为服务编写一个单元测试。