我有一个3层服务和一个spring应用程序服务器。 该服务实质上获得了一些参数(通过REST API)调用 一个相应的服务类,它调用从DB执行select SQL语句的相应存储库类(使用JDBC)。
当我运行Tomcat服务器并通过其他客户端测试API时,它可以正常工作。
现在我的问题 - 我试图用下面的代码测试API 而不是ok状态我得到404
public class AdServersReportsResourceIntegrationTest extends AbstractControllerIntegrationTest
{
private final int responseStatusOK = 200;
@Test
public void getReport() throws Exception
{
Response response = target("adserver").queryParam("fromDate","2015-11-28").queryParam("toDate", "2015-11-30").queryParam("adServer", 1).queryParam("campaign", "569588").queryParam("groupBy", "site").request(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).get(Response.class);
Assert.assertEquals(responseStatusOK, response.getStatus());
}
Resource类看起来像这样:
@Component
@Scope("singleton")
@Path("/adserver")
public class AdServersReportsResource extends Resource{
Logger logger = LoggerFactory.getLogger(AdServersReportsResource.class);
@Autowired
private AdServersReportsService adServersReportsService;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getCampaignCapturedEventsReport(
@QueryParam("fromDate") String strdayStart,
@QueryParam("toDate") String strdayEnd,
@QueryParam("adServer") Integer adServerID,
@QueryParam("campaign") String campaignID,
@QueryParam("groupBy") String groupBy){
//input parameter validation
String response = adServersReportsService.getAdServerComparison(strdayStart,strdayEnd,adServerID,campaignID,groupBy).toString();
return createObjectSuccessResponse(response);
}
}
经过一些试验和错误后,我发现如果我用存根替换JDBC代码,测试就可以了。
奇怪的是我尝试更改JDBC代码以便它执行SQL
使用硬编码参数,我直接在DB上单独测试。
任何人都知道它会是什么?
答案 0 :(得分:0)
当我使用Junit运行测试时,Spring启动并没有实际构建数据库连接(或类似的东西)。我所做的就是嘲笑我用Mockito打电话的服务:
Mockito.when(adServersReportsService.getAdServerComparison(Mockito.any(),Mockito.any(), Mockito.any(),Mockito.any(), Mockito.any())).thenReturn("test");