如何正确单元测试PUT方法



假设产品尚不存在,我正在尝试测试用于更新产品实体的 PUT 请求。因此,我在测试中对以下逻辑进行建模:

  • 创建产品。产品有一个列表作为字段,每次创建或更新产品时,该字段的大小都会自动增加。因此,我希望创建后大小立即等于 1。
  • 执行 GET 请求以检查大小。断言assertTrue(response.getBody().getData().size() == 1);按预期返回 true。
  • 然后,我想对 PUT 请求进行建模,并检查更新产品的size字段是否已增加。因此,断言更新产品的大小字段必须大于上一个更新请求中的大小。

但是我被困在这一点上,需要有关如何在这种情况下继续处理 PUT 请求的建议。

@RequestMapping(method = RequestMethod.PUT)
        @ResponseStatus(HttpStatus.OK)
        void updateProduct(@PathVariable("name") String productName); 
@Test
        public void checkUpdated() {
        Product newProduct = createProduct(SIMPLE_PRODUCT);
        ResponseEntity<SimpleProduct> response = restTemplate.getForEntity("/products/{name}/?fields={fields}",
                    SimpleProduct.class, SIMPLE_PRODUCT);
            assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
            assertTrue(response.getBody().getData().size() == 1); 
}

既然你已经把这个问题标记为testng,我将假设你在TestNG中这样做。

  • createProduct() 方法中,在创建后检索列表的大小,并将其保留在类级别数据成员中。
  • dependsOnMethod通过使用@Test注释的属性,让您的checkUpdated()依赖于createProduct()
  • 使用类级别数据成员进行断言,其中您将PUT后将其值与列表进行比较,并检查其是否小于PUT操作后的列表大小。

最新更新