在弹簧MVC控制器中测试POST方法的正确方法



我有基于SpringMVC和Hibernate的简单应用程序,试图测试POST方法,该方法将客户Customer.class保存到数据库中。不想测试数据库,只有简单的单元测试。得到了绿色测试,但感觉仍然不够,我该如何重构将其按原样进行?

customercontroller.class:

@Controller
@RequestMapping("/customer")
public class CustomerController {
  @Autowired
    private CustomerService customerService;
  @PostMapping("/saveCustomer")
    public String saveCustomer(@ModelAttribute("customer") Customer theCustomer) {
        customerService.saveCustomer(theCustomer);
        return "redirect:/customer/list";
    }}

customerserviceimpl.class:

@Service
public class CustomerServiceImpl implements CustomerService {
  @Override
  @Transactional
    public void saveCustomer(Customer theCustomer) {
        customerDAO.saveCustomer(theCustomer);
    }
}

客户daoimpl.class:

@Repository
public class CustomerDAOImpl implements CustomerDAO {
  @Override
    public void saveCustomer(Customer theCustomer) {
        Session currentSession = sessionFactory.getCurrentSession();
        currentSession.saveOrUpdate(theCustomer);
    }
}

customercontrollertest.class:

public class CustomerControllerTest {

@InjectMocks
CustomerController controller;
@Mock
CustomerService mockCustomerService;
@Mock
View mockView;

MockMvc mockMvc;
@Before
public void setUp() throws Exception {
    MockitoAnnotations.initMocks(this);
    mockMvc = MockMvcBuilders.standaloneSetup(controller)
            .setSingleView(mockView)
            .build();
}
     @Test
        public void testSaveCustomer() throws Exception {
        mockMvc.perform(post("/customer/saveCustomer"))
                .andExpect(status().isOk())
                .andExpect(view().name("redirect:/customer/list"));
    }}

诸如保存诸如客户之类的对象之类的常见错误可能是以下内容:

  1. 帖子请求中缺少属性,例如" firstName"
  2. 使用" ID"这样的可读属性
  3. 无效的属性类型(预期int,get string(
  4. 无效的内容类型(预期JSON,GOT XML(
  5. 请求是否有权保存此对象?
  6. 无效的请求是否返回适当的响应代码?

除了单元测试外,我强烈推荐提示器,因为它看起来像您在使用Windows。

提琴手将允许您拦截系统提出的每一个HTTP请求。这将使您可以检查单位测试的请求,并提供有关您的邮政请求标题,身体等的详细信息。

https://www.telerik.com/fiddler

此工具是当特定请求失败时所做的最后一件事,您需要确切知道与成功的请求相比。

相关内容

  • 没有找到相关文章

最新更新