GVKun编程网logo

如何使用MockRestServiceServer模拟RestTemplate?(模拟 mock)

12

最近很多小伙伴都在问如何使用MockRestServiceServer模拟RestTemplate?和模拟mock这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展android–M

最近很多小伙伴都在问如何使用MockRestServiceServer模拟RestTemplate?模拟 mock这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展android – MockContentResolver在ServiceTestCase中的空指针、backuprestoreremoteservice是什么、com.amazonaws.services.ec2.model.DescribeReservedInstancesRequest的实例源码、com.amazonaws.services.identitymanagement.model.ListServerCertificatesResult的实例源码等相关知识,下面开始了哦!

本文目录一览:

如何使用MockRestServiceServer模拟RestTemplate?(模拟 mock)

如何使用MockRestServiceServer模拟RestTemplate?(模拟 mock)

@RunWith(MockitoJUnitRunner.class)public class FeatureFlipperManagerTest {    @Autowired    RestTemplate restTemplate = new RestTemplate();    @Autowired    Service service = new Service();    MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);    @Test    public void test() throws Exception {      mockServer.expect(requestTo(Mockito.anyString()))                .andRespond(withSuccess("{\"enabled\":true}", MediaType.APPLICATION_JSON));        boolean res = service.isEnabled("xxx");        mockServer.verify();        Assert.assertEquals(true, res);    }}

我有MockRestServiceServer来模拟服务中的restTemplete。但是它总是失败。它显示错误为java.lang.AssertionError:Further request(s) expected 0 out of 1 were executed。任何人都可以让我知道我在哪里做错了。

服务本身将如下所示:

public class Service{    public boolean isEnabled(String xxx) {        RestTemplate restTemplate = new RestTemplate();        ResponseEntity<String> response = restTemplate.getForEntity("someurl",String.class);        if(...)return true;        return false;    }}

答案1

小编典典

首先,您的Service类会在每个请求上创建一个RestTemplate的新实例。我不能足够强调这种不良做法。创建一个类型为RestTemplate的bean并将其注入到您的Servicebean中(它很可能已经创建-
取决于您使用的Spring MVC版本)。

一旦有了它,那么两个RestTemplates:一个在您的Servicebean中,另一个在其中注入,FeatureFlipperManagerTest将是相同的,并且MockRestServiceServer可以进行测试。

编辑-更明确地说:

将您的Service班级修改为:

@Componentpublic class Service {    private RestTemplate restTemplate;    @Autowired     public Service(RestTemplate restTemplate) {        this.restTemplate = restTemplate;    }    public boolean isEnabled(String xxx) {        ResponseEntity<String> response = restTemplate.getForEntity("someurl",String.class);        if(...)return true;        return false;    }}

和您的测试课程:

@RunWith(MockitoJUnitRunner.class)public class FeatureFlipperManagerTest {    @Autowired    RestTemplate restTemplate;    @Autowired    Service service;    MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);    @Test    public void test() throws Exception {      mockServer.expect(requestTo(Mockito.anyString()))                .andRespond(withSuccess("{\"enabled\":true}", MediaType.APPLICATION_JSON));        boolean res = service.isEnabled("xxx");        mockServer.verify();        Assert.assertEquals(true, res);    }}

如果此操作失败,并说没有RestTemplatebean,请粘贴您正在使用的Spring版本信息(Spring Boot?)。

android – MockContentResolver在ServiceTestCase中的空指针

android – MockContentResolver在ServiceTestCase中的空指针

我正在尝试以TDD-ish方式创建服务,为此我创建了以下测试.该服务基本上轮询Web服务并将新信息放入内容提供者.由于它是一项服务,我使用内容提供程序将它存储信息作为测试的oracle.

我想我想要做的是创建一个MockContentResolver以实现这一点,但在ProviderTestCase2类之外缺少它的示例.当我运行这个脚本但它在addProvider行上的null指针.

有没有人有一个创建/访问模拟内容解析器的例子?在ServiceTestCase中?

public class ondemandPollingServiceTests extends ServiceTestCase<ondemandJobFetchingService> {
  private MockContentResolver mContentResolver;

  public ondemandPollingServiceTests() {
        super(ondemandJobFetchingService.class);
    }

  protected void setUp() throws Exception {
    super.setUp();
    mContext = getContext();

    ContentProvider cp = new ondemandJobInfoProvider();
    mContentResolver.addProvider(ondemandJobInfoProvider.AUTHORITY,cp);
  }

  protected void tearDown() throws Exception {
    super.tearDown();
  }

  public void testJobInsertion() {
    Uri url = Jobs.JobsColumns.CONTENT_URI;
    Cursor cursor;
    cursor = mContentResolver.query(url,null,null);
    int before = cursor.getCount();
    cursor.close();

    Intent startIntent = new Intent();
    startIntent.setClass(mContext,ondemandJobFetchingService.class);
    startService(startIntent);

    cursor = mContentResolver.query(url,null);
    int after = cursor.getCount();
    cursor.close();
    assertTrue(before != after);
  }
}

解决方法

对我来说,似乎你从来没有实例化你的mContentResolver(你没有像mContentResolver = new MockContentResolver();这样的行.

backuprestoreremoteservice是什么

backuprestoreremoteservice是什么

backuprestoreremoteservice是指远程数据备份恢复服务,实质就是数据恢复工程师通过网络,远程协助客户将丢失的数据恢复的过程;能够进行远程数据恢复的均为逻辑故障数据,如:误删除、误ghost、误格式化、误分区等等。

backuprestoreremoteservice是什么

本文操作环境:Windows7系统,Dell G3电脑。

backup restore remote service是远程数据备份恢复服务。

实质就是数据恢复工程师通过网络,远程协助客户将丢失的数据恢复的过程。

能够进行远程数据恢复的均为逻辑故障数据,例如:误删除、误Ghost、误格式化、误分区、RAW格式、分区丢失、病毒破坏、数据库文件修复、目录损坏、0字节、OFFICE文件修复、邮件修复等等;也就是说存储介质本身没有问题,只不过是出现一些逻辑性的错误。

进行远程数据恢复服务的前提条件:

电脑系统能够正常启动,并且能够正常链接到互联网络上。能够正常上网,并且可使用一些远程协助,即时通讯交流软件工具。例如:腾讯QQ、MSN、百度HI、TeamViewer等等。网络连接要求顺畅、不卡顿。需要保证恢复操作电脑无木马程序、无病毒。

并且有足够的存储空间用于保存恢复出的数据文件。需要使用一些必要的数据恢复检测软件。

相关介绍:

远程数据服务(Remote Data Services,RDS)是允许我们处理客户端数据的一系列服务的统称。不用担心这方面的问题,因为RDS本身就是ADO的一部分,只有在需要传送和使用客户端数据时,才会使用。

远程数据服务RDS允许程序员开发原生的WINDOWS分布式多层应用系统,或是开发以浏览器为图形用户接口的WEB应用系统。

远程数据服务RDS提供了客户端应用程序在INTERNET/INTRANET或分布式环境中使用ADO中RECORDSET对象的能力。

可以在浏览器中通过远程数据服务RDS取得RECORDSET对象,然后在脚本语言中存取数据。或在原生WINDOWS应用程序中通过RDS取得RECORDSET对象,然后使用程序代码来存取远程数据源中的数据。RDS能够将ADO取得的数据一DCOM或HTTP通信协议由中介软件或中介组件传递给客户端,并且把数据缓存在客户端中让客户端存取数据。

推荐:《编程视频》

以上就是backuprestoreremoteservice是什么的详细内容,更多请关注php中文网其它相关文章!

com.amazonaws.services.ec2.model.DescribeReservedInstancesRequest的实例源码

com.amazonaws.services.ec2.model.DescribeReservedInstancesRequest的实例源码

项目:soundwave    文件:Ec2InstanceStore.java   
@Override
public Map<AvailabilityZone,List<ReservedInstances>> getReservedInstancesForZone(
    AvailabilityZone zone,AmazonEC2Client client) throws Exception {

  OperationStats op = new OperationStats("ec2InstanceStore","getReservedInstancesForZone");

  try {
    Map<AvailabilityZone,List<ReservedInstances>> ret = new HashMap<>();
    DescribeReservedInstancesRequest request = new DescribeReservedInstancesRequest()
        .withFilters(new Filter("availability-zone",Arrays.asList(zone.getZoneName())))
        .withSdkClientExecutionTimeout(
            600 * 1000) //10 minutes time out for total execution including retries
        .withSdkRequestTimeout(300 * 1000); //5 minutes time out for a single request

    DescribeReservedInstancesResult result = client.describeReservedInstances(request);
    ret.put(zone,result.getReservedInstances());

    op.succeed();
    return ret;

  } catch (Exception e) {

    op.Failed();
    logger.error(ExceptionUtils.getRootCauseMessage(e));
    throw e;
  }
}
项目:photon-model    文件:AWSReservedInstancePlanService.java   
@Override
public void onSuccess(DescribeReservedInstancesRequest request,DescribeReservedInstancesResult describeReservedInstancesResult) {
    List<ReservedInstances> reservedInstances = describeReservedInstancesResult
            .getReservedInstances();
    if (CollectionUtils.isNotEmpty(reservedInstances)) {
        DateTime endDate = new DateTime(DateTimeZone.UTC).withDayOfMonth(1)
                .minusMonths(NO_OF_MONTHS)
                .withTimeAtStartOfDay();
        for (ReservedInstances reservedInstance : reservedInstances) {
            if (reservedInstance.getEnd() != null && reservedInstance.getEnd().before(
                    endDate.toDate())) {
                continue;
            }
            // Set the Region for RI's whose scope is region.
            if (reservedInstance != null && reservedInstance.getScope() != null &&
                    reservedInstance.getScope().equals(REGION)) {
                reservedInstance.setAvailabilityZone(this.region.getRegionName());
            }
            this.context.reservedInstancesPlan.add(reservedInstance);
        }
    }
    checkAndPatchReservedInstancesPlans();
}
项目:soundwave    文件:Ec2InstanceStore.java   
/**
 * Get Reserved instances for a given region
 * @param region
 * @return
 */
@Override
public List<ReservedInstances> getReservedInstances(Region region) {

  OperationStats op = new OperationStats("ec2InstanceStore","getReservedInstances");
  try {

    AmazonEC2Client client = getClient(region);
    DescribeReservedInstancesRequest request = new DescribeReservedInstancesRequest()
        .withSdkClientExecutionTimeout(
            600 * 1000) //10 minutes time out for total execution including retries
        .withSdkRequestTimeout(300 * 1000); //5 minutes time out for a single request

    DescribeReservedInstancesResult result = client.describeReservedInstances(request);

    op.succeed();
    return result.getReservedInstances();

  } catch (Exception e) {

    op.Failed();
    logger.error(ExceptionUtils.getRootCauseMessage(e));
    throw e;
  }


}
项目:photon-model    文件:MockAWSReservedInstancePlansService.java   
@Override
protected void getReservedInstancesPlans(AWSReservedInstanceContext context) {
    AtomicInteger currentStageTaskCount = new AtomicInteger(1);
    DescribeReservedInstancesRequest request = new DescribeReservedInstancesRequest();
    DescribeReservedInstancesResult result = new DescribeReservedInstancesResult();
    result.setReservedInstances(Arrays.asList(createReservedInstance("ri1")));
    new AWSReservedInstanceAsyncHandler(getHost(),currentStageTaskCount,null,context)
            .onSuccess(request,result);
}
项目:elasticsearch_my    文件:AmazonEC2Mock.java   
@Override
public DescribeReservedInstancesResult describeReservedInstances(DescribeReservedInstancesRequest describeReservedInstancesRequest) throws AmazonServiceException,AmazonClientException {
    throw new UnsupportedOperationException("Not supported in mock");
}

com.amazonaws.services.identitymanagement.model.ListServerCertificatesResult的实例源码

com.amazonaws.services.identitymanagement.model.ListServerCertificatesResult的实例源码

项目:aws-doc-sdk-examples    文件:ListServerCertificates.java   
public static void main(String[] args) {

        final AmazonIdentityManagement iam =
            AmazonIdentityManagementClientBuilder.defaultClient();

        boolean done = false;
        ListServerCertificatesRequest request =
                new ListServerCertificatesRequest();

        while(!done) {

            ListServerCertificatesResult response =
                iam.listServerCertificates(request);

            for(ServerCertificateMetadata Metadata :
                    response.getServerCertificateMetadataList()) {
                System.out.printf("Retrieved server certificate %s",Metadata.getServerCertificateName());
            }

            request.setMarker(response.getMarker());

            if(!response.getIsTruncated()) {
                done = true;
            }
        }
    }
项目:gravity    文件:AwsAutomationAction.java   
public  List<ServerCertificateMetadata> getCertificates(){
    ListServerCertificatesResult listSigningCertificates = identityClient.listServerCertificates();
    return listSigningCertificates.getServerCertificateMetadataList();
}
项目:cmn-project    文件:IAM.java   
public List<ServerCertificateMetadata> listServerCerts(String path) {
    logger.info("list server certs,path={}",path);
    ListServerCertificatesResult result = iam.listServerCertificates(new ListServerCertificatesRequest().withPathPrefix(path));
    return result.getServerCertificateMetadataList();
}

今天关于如何使用MockRestServiceServer模拟RestTemplate?模拟 mock的讲解已经结束,谢谢您的阅读,如果想了解更多关于android – MockContentResolver在ServiceTestCase中的空指针、backuprestoreremoteservice是什么、com.amazonaws.services.ec2.model.DescribeReservedInstancesRequest的实例源码、com.amazonaws.services.identitymanagement.model.ListServerCertificatesResult的实例源码的相关知识,请在本站搜索。

本文标签: