我正在尝试模拟下面的MsgController中存在的两个存储库:
InflowRepository和OrderRepository
并测试其余端点:来自另一个TestController的path =“ / api / msg / inflow”。
在TestController中编写以下语句时出现错误:-
when(orderrepository.findByOrderId(inflow.getOrder())).thenReturn(orderp);
this.mockMvc.perform(post("/api/msg/inflow").content(requestJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
verify(inflowrepository,times(1)).findByOrderUuid(orderp.getUuid());
verifyNoMoreInteractions(inflowrepository);
/ then语句时,您能否帮助我编写正确的文字?还是有其他替代方法?
MsgController如下:
@RestController
@EnableAutoConfiguration
@CrossOrigin
public class MsgController {
@Autowired
private InflowRepository inflowRepo;
@Autowired
private OrderRepository orderRepo;
@PostMapping(path = "/api/msg/inflow",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<String> update(@RequestBody InflowMessage msg) {
System.out.print("Printing the message only"+ msg);
ObjectMapper mapper = new ObjectMapper().registerModule(new ParameterNamesModule())
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
mapper.findAndRegisterModules();
mapper.registerModule(new JavaTimeModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE,false);
try {
String jsonInflow = mapper.writeValueAsString(msg);
} catch (JsonProcessingException ex) {
Logger.getLogger(MsgController.class.getName()).log(Level.SEVERE,null,ex);
}
Order o = orderRepo.findByOrderId(msg.getOrder()).orElse(null);
ResponseEntity<String> res;
if (o != null) {
System.out.print("Order o is not null");
List<Inflow> lst = inflowRepo.findByOrderUuid(o.getUuid());
System.out.print("Inflow list has been generated");
Inflow inflow=new Inflow();
if (lst.size()>0) {
inflow=lst.get(0);
} else {
inflow.setUuid(UUID.randomUUID());
}
inflow.setOrder(o);
//inflow.seteta(msg.getDeliveryDate());
inflow.setamount(msg.getamount());
inflowRepo.save(inflow);
res = new ResponseEntity<>("message processed",HttpStatus.OK);
} else {
System.out.print("After Order o has not been generated");
res = new ResponseEntity<>("unknown order id:" + msg.getOrder(),HttpStatus.NOT_FOUND);
}
return res;
}
}
TestController如下:
public class TestController {
ObjectMapper mapper;
@InjectMocks
private MessageController messagecontroller;
@Autowired
private MockMvc mockMvc;
@Mock
private InflowRepository inflowrepository;
@Mock
private OrderRepository orderrepository;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
this.mockMvc = MockMvcBuilders.standalonesetup(messagecontroller).build();
}
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss",timezone="UTC")
private LocalDateTime nowt=LocalDateTime.now();
@Test
public void testupdate() throws Exception{
Part part = new Part();
part.setDescription("test data");
part.setName("PA17345");
Demand demand= new Demand();
demand.setamount(10002);
demand.setPart(part);
demand.setDemandId("IEO123");
demand.setDemandTime(nowt);
UUID uuid=UUID.randomUUID();
Order orderp=new Order();
orderp.setDeliveryTime(nowt);
orderp.setComplied(true);
orderp.setSupplierId("Hello Gmbh");
orderp.setOrderId("OE12345");
orderp.setamount(10002);
orderp.setDemand(demand);
orderp.setUuid(uuid);
orderrepository.save(orderp);
InflowMessage inflow = new InflowMessage();
inflow.setamount(10002);
inflow.setDeliveryDate(nowt);
inflow.setOrder("OE12345");
Inflow in=new Inflow();
in.setOrder(orderp);
in.seteta(nowt);
in.setamount(10002);
in.setUuid(uuid);
System.out.print("Hello"+ "\n");
System.out.print(in.getOrder());
System.out.print("\n"+in.geteta());
System.out.print("\n"+in.getamount());
inflowrepository.save(in);
ObjectMapper mapper = new ObjectMapper().registerModule(new ParameterNamesModule())
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
mapper.findAndRegisterModules();
mapper.registerModule(new JavaTimeModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestJson=mapper.writeValueAsString(inflow);
when(orderrepository.findByOrderId(inflow.getOrder())).thenReturn(orderp);
this.mockMvc.perform(post("/api/message/inflow").content(requestJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
verify(inflowrepository,times(1)).findByOrderUuid(orderp.getUuid());
verifyNoMoreInteractions(inflowrepository);
}
}