我很困惑他们之间有什么区别,在哪种情况下选择哪一个.一些差异可能是显而易见的,比如any和eq,但我把它们都包括在内只是为了确定.
我想知道他们之间的差异,因为我遇到了这个问题:我在Controller类中有这个POST方法
public Response doSomething(@ResponseBody Request request) {
return someService.doSomething(request);
}
Run Code Online (Sandbox Code Playgroud)
并希望在该控制器上执行单元测试.我有两个版本.第一个是简单的,就像这样
@Test
public void testDoSomething() {
//initialize ObjectMapper mapper
//initialize Request req and Response res
when(someServiceMock.doSomething(req)).thenReturn(res);
Response actualRes = someController.doSomething(req);
assertThat(actualRes, is(res));
}
Run Code Online (Sandbox Code Playgroud)
但我想使用像这样的MockMvc方法
@Test
public void testDoSomething() {
//initialize ObjectMapper mapper
//initialize Request req and Response res
when(someServiceMock.doSomething(any(Request.class))).thenReturn(res);
mockMvc.perform(post("/do/something")
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(req))
)
.andExpect(status().isOk())
.andExpect(jsonPath("$message", is("done")));
}
Run Code Online (Sandbox Code Playgroud)
两者都运作良好.但我希望我someServiceMock.doSomething()在MockMvc方法中接收req,或者至少是一个具有相同变量值的对象req(不仅仅是任何Request类),并返回res,就像第一个一样.我知道使用MockMvc方法是不可能的(或者是吗?),因为实际调用中传递的对象总是与mock中传递的对象不同.无论如何我能做到吗?或者这样做甚至有意义吗?或者我应该满意使用any(Request.class)?我试过了eq,same但是所有这些都失败了.
先感谢您.我希望我能很好地解释自己.
就我所知,MockMvc只是测试Controller,并模拟Service层。
RestAssured和TestRestTemplate正在测试我们API的运行实例。
那是对的吗?RestAssured和Spring Boot的TestRestTemplate有什么区别?
我有一个 DAG,其中任务 A、任务 B 和任务 C 依次运行。有没有一种方法可以让我从 UI 触发仅运行任务 B 和 C?
从这个问题:Triggering a task in Airflow with the CLI run command,我知道我们可以从 CLI 触发任务。但我不知道如何通过 UI 执行此操作
java ×2
airflow ×1
difference ×1
matcher ×1
mockito ×1
mockmvc ×1
rest-assured ×1
spring-boot ×1
unit-testing ×1