我开发了一个在MongoDb中存储Books的应用程序,该数据是从用户从控制台获取的,并将其直接保存到MongoDb中。并将Book对象的所有详细信息传递到Angular前端,我已经使用Spring制作了api。
@RestController
@RequestMapping("/api")
public class Controller {
@Autowired
BookRepository bookRepo;
@GetMapping("/books")
public List<Book> getBooks(){
return bookRepo.findAll();
}
}
API正常运行(使用邮递员检查,可以从Angular站点查看数据)
现在,我必须为此Controller类编写一个单元测试。我对测试的知识很低,请帮助我。预先感谢。
答案 0 :(得分:1)
您可以尝试以下代码进行单元测试。
@RunWith(MockitoJUnitRunner.class)
public class ControllerTest {
@Autowired
private MockMvc mockMvc;
@InjectMocks
private Controller controller;
@Mock
BookRepository bookRepo;
@Before
public void Setup() {
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Test
public void testGetBooks(){
Book book1 = new Book();
book1.setBookId(101L);
Book book2 = new Book();
book2.setBookId(102L);
List<Book> books = new ArrayList<>();
books.add(book1);
books.add(book2);
Mockito.when(bookRepo.findAll()).thenReturn(books);
RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/api/books")
.accept(MediaType.APPLICATION_JSON);
mockMvc.perform(requestBuilder).andExpect(MockMvcResultMatchers.status().isOk());
Mockito.verify(bookRepo, times(1)).findAll();
}
}