如何正确单元测试PUT方法

时间:2017-10-16 21:33:53

标签: java rest unit-testing testng

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

  • 创建产品。产品有一个List作为一个字段,每次创建或更新产品时都会自动增量。所以我希望在创建之后大小等于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); 
}

1 个答案:

答案 0 :(得分:0)

由于您已将此问题标记为 ... rtc = turtle.textinput("Sudoku", "Do you want to play with real time correction?") if rtc == 'y': for i in range (0,3): for j in range (0,3): if playboard[i][j] != 0: pass num = turtle.numinput('Sudoku', 'Enter a number for box[' + str(i) + ',' + str(j) + ']?: ', minval=1, maxval=4) # turtle.goto(box[i]_[j](posx, posy)) turtle.goto(box_map[i, j](posx, posy)) turtle.write(str(num), move=True, align="center", font=("Times New Roman", 24)) ,我将假设您在TestNG中执行此操作。

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