Salesforce调用接口APEX

1.调用

public class JHRest_CTIAudioTransforCls {
    public static List<Object> audioTransfor(String fileLink) {
        PostMessage postMessage = new PostMessage();
        // postMessage.fileLink = 'https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav';
        postMessage.fileLink = fileLink;
        System.debug(postMessage);
        Http h = new Http();
        HttpRequest req = new HttpRequest();
        req.setEndpoint('请求地址');
        req.setMethod('POST');
        req.setHeader('Content-Type', 'application/json');
        req.setHeader('Content-Length', '0');
        req.setTimeout(120000);
        req.setBody(JSON.serialize(postMessage));
        System.debug('----》' + req.getEndpoint());
        HttpResponse res = h.send(req);
        System.debug('status---->' + res.getStatusCode());
        System.debug('body---->' + res.getBody());
        List<Object> results = (List<Object>) JSON.deserializeUntyped(res.getBody());
        System.debug('results--->'+results);
        return results;
    }


    public class PostMessage {
        public String fileLink;
    }
}

 

测试类分为2个部分:

模拟resopnse部分:

@IsTest
global class MockHttpResponseGenerator implements HttpCalloutMock {
    global HTTPResponse respond(HTTPRequest req) {
        // Optionally, only send a mock response for a specific endpoint
        // and method.
        System.assertEquals('请求地址', req.getEndpoint());
        System.assertEquals('POST', req.getMethod());
        // Create a fake response
        HttpResponse res = new HttpResponse();
        res.setHeader('Content-Type', 'application/json');
        List<ResponData> responDatas=new List<MockHttpResponseGenerator.ResponData>();
        ResponData respon=new ResponData();
        respon.EndTime='2350';
        respon.SilenceDuration=0;
        respon.BeginTime=340;
        respon.Text='北京的天气。';
        respon.ChannelId=0;
        respon.SpeechRate=149;
        respon.EmotionValue=5.1;
        responDatas.add(respon);
        String bodyText = JSON.serialize(responDatas);
        res.setBody(bodyText);
        res.setStatusCode(200);
        return res;
    }
    global class ResponData{
        global String EndTime;
        global Integer SilenceDuration;
        global Integer BeginTime;
        global String Text;
        global Integer ChannelId;
        global Integer SpeechRate;
        global Decimal EmotionValue;
    }
}

第二部分:调用的测试类:

@IsTest
global class JH_AudioTransForLogButton_Test{
    @IsTest
    static void testBehavior() {

        // Set mock callout class
        Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());
        insert interactionLog;
        Test.startTest();
        List<Object> res = JHRest_CTIAudioTransforCls.audioTransfor('参数'); 
        Test.stopTest();
    }

}

 

注意的是在设置mock的时候body设置要确保跟请求的返回值一致,不然会出现格式错误等问题

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值