当前位置: 首页 > 知识库问答 >
问题:

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

冯奇思
2023-03-14

如果我有一个名为authorize()的Apex函数,它只获取用户名、密码和会话令牌,还有一个名为getURL('id#','key')的函数,它将记录的id作为字符串,将图像的键作为字符串返回,作为参数。getURL调用其中的authorize函数,以获取其callout的凭据。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);
        }
    }

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

共有1个答案

贺博厚
2023-03-14

我相信你的calloutTest课程。setMock(HttpCalloutMock.class,新的MultiRequestMock(mapOfRequests))然后调用getUrl和/或authorize方法,而不是真正执行请求的请求,返回的响应将是您在MultiRequestMock类中实现的响应(HttpRequest)方法中指定的响应。这就是我对它工作的基本看法,有关更多信息和示例,您可以在测试callout类时看到此资源。这将为您提供所需的代码覆盖率,但遗憾的是,无法检查您是否获得了正确的JSON响应。为此,您可以使用dev控制台并执行匿名?

您可能需要考虑简化您的HttpCalloutMock实现并考虑从构造函数中删除map,因为这个类真的只需要返回一个简单的响应,那么您的caloutTest类可以在其中确保返回的响应是正确的。希望这有所帮助

 类似资料:
  • 我想编写一个单元测试,检查调用是否不是从触发器发出的 我知道如何通过实现HttpCalloutMock来测试调用是否正确: 但是如果没有发出HTTP请求,那么就不会调用响应()方法。所以这种方法根本不会测试请求是否发出。 我需要这样的东西: 我该怎么做?

  • 本文向大家介绍如何使用Python标准库进行性能测试,包括了如何使用Python标准库进行性能测试的使用技巧和注意事项,需要的朋友参考一下 Profile 和 cProfile 在 Python 标准库里面有两个模块可以用来做性能测试。 1. 一个是 Profile,它是一个纯 Python 的实现,所以会慢一些,如果你需要对模块进行拓展,那么这个模块比较合适。 2. 第二个是 cProfile,

  • 集成测试是对已经进行单元测试的各个部分的一种整合测试。集成是昂贵的,并且它出现在测试中。你必须把这个考虑到你的预计和时间表里。 理想情况下,你应该这样组织一个项目,使得最后没有一个阶段是必须通过显式集成来进行的。这比在项目过程中,随着事情完成逐渐集成事情要好得多。如果这是不可避免的,请仔细评估。

  • 压力测试很有趣,一开始好像压测的目的是找出系统在负载下能不能工作。现实中,系统在负载下确实能工作,但在负载足够重的某些情况下不能工作。我把这叫做碰壁或撞响[1]。可能会有例外,但大多数情况下会有这么一堵“墙”。压测的目的是为了指出墙在哪里,然后弄清楚怎么把墙移得更远些。 压测计划需要在工程的早期就规划好,因为它经常有助于弄清楚到底什么是被期望的。两秒的网页请求是一个悲伤的失败还是一个了不起的成功?

  • 单元测试,对独立的代码功能片段,由编写代码的团队进行测试,也是一种编码,而非与之不同的一些事情。设计代码的一部分就是设计它该如何被测试。你应该写一个测试计划,即使它只是一句话。有时候测试很简单:“这个按钮看起来好吗?”,有时候它很复杂:“这个匹配算法可以精确地返回正确的匹配结果?”。 无论任何可能的时候,使用断言检查以及测试驱动。这不仅能尽早发现 bug,而且在之后也很有用,让你在其他方面担心的谜

  • 本文向大家介绍您如何进行功能测试?,包括了您如何进行功能测试?的使用技巧和注意事项,需要的朋友参考一下 功能测试 作为功能测试的一部分,应该对业务指定的所有用户要求进行良好的测试。功能测试要求在类似于客户要求的环境中进行测试。所有边界条件,负面情景都被考虑在内。应用程序的每个功能都应该可以很好地运行,并且不会出现任何错误。 功能测试的目的 应该测试运行良好的应用程序预期的基本要求。用户界面应易于使