Java jooq()中的Mocking Record.insert()
我有一个控制器端点,看起来像这样Java jooq()中的Mocking Record.insert(),java,unit-testing,jooq,Java,Unit Testing,Jooq,我有一个控制器端点,看起来像这样 @POST public JobComponentGetResponse createJobComponent( @PathParam("jobId") Integer jobId, @Valid JobComponentPostRequest request ) { JobComponentRecord newJobComponent = dao.jobComponent.newRecord(); newJobComponen
@POST
public JobComponentGetResponse createJobComponent(
@PathParam("jobId") Integer jobId,
@Valid JobComponentPostRequest request
) {
JobComponentRecord newJobComponent = dao.jobComponent.newRecord();
newJobComponent.setJobId(jobId);
newJobComponent.setLabel(request.label);
newJobComponent.setSqft(request.sqFt);
newJobComponent.insert();
return new JobComponentGetResponse(newJobComponent);
}
以及相应的单元测试
@Test
public void createJobComponent_createsAndReturnsTheDesiredRecord() {
JobComponentPostRequest request = new JobComponentPostRequest();
JobComponentRecord jobComponent = spy(new JobComponentRecord());
when(dao.jobComponent.newRecord()).thenReturn(jobComponent);
when(jobComponent.insert()).thenReturn(null);
JobComponentGetResponse response = jobComponentController.createJobComponent(jobId, request);
assertThat(response, samePropertyValuesAs(request));
}
我正在尝试测试控制器的响应,但当控制器调用newJobComponent.insert()
我尝试过在(jobComponent.insert())时执行
,然后返回(null)代码>也不起作用。我怀疑您的dao.jobComponent.newRecord()即使返回空值:当(dao.jobComponent.newRecord())。然后返回(jobComponent)代码>
什么是dao.jobComponent,它来自哪里
EDIT:我对您的代码没有全面的了解,但JobComponentRecord的getter是个好主意,您可以使用mockito轻松确定他的返回值。奇怪的是,newJobComponent
不是空的,它的类型是JobComponentRecord.mockito.Mock
,所有的setter都工作正常。只有在运行insert
时,才会抛出空指针。