【问题标题】:How to Unit test PUT method correctly如何正确地对 PUT 方法进行单元测试
【发布时间】:2017-10-16 21:33:53
【问题描述】:

假设产品尚不存在,我正在尝试测试更新产品实体的 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); 
}

【问题讨论】:

    标签: java rest unit-testing testng


    【解决方案1】:

    由于您已将此问题标记为testng,我将假设您在 TestNG 中进行此操作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-23
      • 2014-01-30
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2020-01-06
      • 1970-01-01
      相关资源
      最近更新 更多