gpt4 book ai didi

testing - 如何为 Salesforce 进行 MultiMock Http 标注测试?

转载 作者:行者123 更新时间:2023-11-28 21:36:31 24 4
gpt4 key购买 nike

如果我有一个名为 authorize() 的 Apex 函数,它只获取用户名、密码和 session token ,还有另一个名为 getURL('id#', 'key '),它将记录的 id# 作为字符串,并将图像的键作为参数作为字符串返回。 getURL 调用其中的授权函数以获取其标注的凭据。 authorize是post请求,getURL是get请求。

我正在尝试弄清楚如何测试这两个标注,以便我可以确保 getURL 返回正确的 JSON 作为响应。它甚至不一定是 URL,这是它最终的意图。但我只需要对其进行测试,以确保这些标注正常工作,并且我正在收到针对它所需的 75% 代码覆盖率的响应。

我制作了一个如下所示的 multiRequestMock 类:

    public class MultiRequestMock implements HttpCalloutMock {
Map<String, HttpCalloutMock> requests;

public MultiRequestMock(Map<String, HttpCalloutMock> requests) {
this.requests = requests;
}

public HTTPResponse respond(HTTPRequest req) {
HttpCalloutMock mock = requests.get(req.getEndpoint());
if (mock != null) {
return mock.respond(req);
} else {
throw new MyCustomException('HTTP callout not supported for test methods');
}
}

public void addRequestMock(String url, HttpCalloutMock mock) {
requests.put(url, mock);
}
}

然后我开始编写一个 calloutTest.cls 文件,但不确定如何使用这个模拟类来测试我的原始功能。对此的任何澄清或帮助都会有所帮助。谢谢。

最佳答案

我相信你的 calloutTest 类你使用 Test.setMock(HttpCalloutMock.class, new MultiRequestMock(mapOfRequests)); 然后调用 getUrl 和/或 authorize 方法,而不是请求真正执行返回的响应将是在 response(HttpRequest) 方法中指定的,您在 MultiRequestMock 类。这基本上就是我认为它的工作方式,有关更多信息和示例,您可以查看 this resource on testing callout classes .这将为您提供所需的代码覆盖率,但遗憾的是无法检查您是否获得了正确的 JSON 响应。为此,您可以使用开发控制台和执行匿名?

您可能想要查看简化您的 HttpCalloutMock 实现并考虑从构造函数中删除映射,因为此类实际上只需要返回一个简单的响应然后您的 calloutTest类可以是您确保返回的响应正确的地方。希望这有帮助

关于testing - 如何为 Salesforce 进行 MultiMock Http 标注测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58270788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com