Sou*_*rer 2 mocking spring-test-mvc spring-boot
我正在尝试使用 MockMvc 做一个简单的测试类。但我陷入了一件非常简单的事情(但文档没有帮助)。
我的基本代码是
@SpringBootTest
@AutoConfigureMockMvc
class RecommendationServiceApplicationTests {
private static final Logger LOG = LoggerFactory.getLogger(RecommendationServiceApplicationTests.class);
private final String url = "/recommendation?productId=%d";
static final int PRODUCT_OK = 1;
static final int PRODUCT_KO = 0;
static final int PRODUCT_NOT_FOUND = 113;
@Autowired
private MockMvc mockMvc;
// Check OK response
@Test
public void getRecommendationsOK() throws Exception {
MockHttpServletRequestBuilder requestBuilder;
MvcResult result;
String contentResponse;
Recommendation[] recommendations;
requestBuilder=
MockMvcRequestBuilders
.get("/recommendation?productId=1")
.accept(MediaType.APPLICATION_JSON);
result = this.mockMvc
.perform(requestBuilder)
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
}
}
Run Code Online (Sandbox Code Playgroud)
这样,代码运行良好,但是当我尝试使用参数化查询时,我找不到方法
我已经尝试过(没有成功)
.get("/recommendation?productId=",PRODUCT_OK)
.get("/recommendation?productId={}",PRODUCT_OK)
.get("/recommendation?productId=%d",PRODUCT_OK)
.get("/recommendation?productId=[]",PRODUCT_OK)
.get("/recommendation?productId=PRODUCT_OK",PRODUCT_OK)
Run Code Online (Sandbox Code Playgroud)
提前致谢
除此之外.param(),您还可以使用.get(String urlTemplate, Object... uriVars)您已经尝试过的。您非常接近解决方案:
.get("/recommendation?productId={product}",PRODUCT_OK)
Run Code Online (Sandbox Code Playgroud)
您还可以扩展多个 URI 变量
.get("/recommendation?productId={product}&sort={var}",PRODUCT_OK, "desc");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |