How to confirm one of many HttpCalloutMock has been usedHow to check if any error has been added to a record?Account ownership has been changed automaticallySystem.AsyncException: Maximum callout depth has been reachedHow to set an HttpCalloutMock to reply differently on subsequent requests to the same endpoint?System.AsyncException: Maximum stack depth has been reachedCallout Unit Test Need help in getting code coverage its getting to 46%How can I test Callouts with HttpCalloutMock?How can I test Post Callout with web token's access? HttpCalloutMockIs getContent not supported in unit tests, even if HttpCalloutMock is used?Trigger to calculate number of times a pick list field has been used

What should tie a collection of short-stories together?

How to create the Curved texte?

Brexit - No Deal Rejection

Are there other languages, besides English, where the indefinite (or definite) article varies based on sound?

How to make healing in an exploration game interesting

Does someone need to be connected to my network to sniff HTTP requests?

Why did it take so long to abandon sail after steamships were demonstrated?

Is it possible to upcast ritual spells?

Who is flying the vertibirds?

How to deal with a cynical class?

Sailing the cryptic seas

Are ETF trackers fundamentally better than individual stocks?

How to deal with taxi scam when on vacation?

Is it true that good novels will automatically sell themselves on Amazon (and so on) and there is no need for one to waste time promoting?

Why do passenger jet manufacturers design their planes with stall prevention systems?

Is it normal that my co-workers at a fitness company criticize my food choices?

Can I use USB data pins as power source

Can a druid choose the size of its wild shape beast?

How to read the value of this capacitor?

A sequence that has integer values for prime indexes only:

Unexpected result from ArcLength

Science-fiction short story where space navy wanted hospital ships and settlers had guns mounted everywhere

Gantt Chart like rectangles with log scale

Define, (actually define) the "stability" and "energy" of a compound



How to confirm one of many HttpCalloutMock has been used


How to check if any error has been added to a record?Account ownership has been changed automaticallySystem.AsyncException: Maximum callout depth has been reachedHow to set an HttpCalloutMock to reply differently on subsequent requests to the same endpoint?System.AsyncException: Maximum stack depth has been reachedCallout Unit Test Need help in getting code coverage its getting to 46%How can I test Callouts with HttpCalloutMock?How can I test Post Callout with web token's access? HttpCalloutMockIs getContent not supported in unit tests, even if HttpCalloutMock is used?Trigger to calculate number of times a pick list field has been used













4















If I load multiple HttpCalloutMock's when settings up a test:



Test.setMock(HttpCalloutMock.class, MockFactory.create());


And I am using a MultiRequestMock implementation:



public without sharing 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);


throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




And I don't persist the results from the callout.



Is there anyway to check that eachany of the HttpCalloutMock have been used?










share|improve this question




























    4















    If I load multiple HttpCalloutMock's when settings up a test:



    Test.setMock(HttpCalloutMock.class, MockFactory.create());


    And I am using a MultiRequestMock implementation:



    public without sharing 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);


    throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




    And I don't persist the results from the callout.



    Is there anyway to check that eachany of the HttpCalloutMock have been used?










    share|improve this question


























      4












      4








      4


      2






      If I load multiple HttpCalloutMock's when settings up a test:



      Test.setMock(HttpCalloutMock.class, MockFactory.create());


      And I am using a MultiRequestMock implementation:



      public without sharing 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);


      throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




      And I don't persist the results from the callout.



      Is there anyway to check that eachany of the HttpCalloutMock have been used?










      share|improve this question
















      If I load multiple HttpCalloutMock's when settings up a test:



      Test.setMock(HttpCalloutMock.class, MockFactory.create());


      And I am using a MultiRequestMock implementation:



      public without sharing 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);


      throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




      And I don't persist the results from the callout.



      Is there anyway to check that eachany of the HttpCalloutMock have been used?







      apex unit-test httpcalloutmock






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 10 hours ago







      Robs

















      asked 11 hours ago









      RobsRobs

      2,221535




      2,221535




















          1 Answer
          1






          active

          oldest

          votes


















          3














          Declare a variable in your mock class, and set its value in the respond method. if that variable is true at the end of your test , it means mock was used and callout was done.



          global class CalloutMock1 implements HttpCalloutMock 

          global boolean isCalled = false;
          global HTTPResponse respond(HTTPRequest req)
          isCalled = true;
          // Create a fake response.
          // Set response values, and
          // return response.




          Test Class:



          CalloutMock1 cm1= new CalloutMock1();
          Test.setMock(HttpCalloutMock.class, cm1);

          //Call your code.


          System.assert(cm1.isCalled);



          Edit :Based on your updated code:



          public without sharing class MultiRequestMock implements HttpCalloutMock 

          public Map<String, HttpCalloutMock> requests;
          public Set<String> usedEndpoints = new Set<String>();

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


          public HTTPResponse respond(HTTPRequest req)

          HttpCalloutMock mock = requests.get(req.getEndpoint());
          usedEndpoints.add(req.getEndpoint());

          if (mock != null)
          return mock.respond(req);


          throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




          Test Class :



          MultiRequestMock mm = new MultiRequestMock (new Map<String, HttpCalloutMock>());
          mm.addRequestMock();//

          //Do your callouts

          //Then Assert here

          System.assert(mm.usedEndpoints.contains('Your endpoint') , 'Your Endpoint not called'); //Your endpoint called
          System.assert(mm.usedEndpoints.size() == mm.requests.size() , 'Not all mocks were consumed');





          share|improve this answer

























          • Thanks. I've updated my question to expand on my HttpCalloutMock implementation

            – Robs
            10 hours ago






          • 1





            Hi @Robs provided pseudo code, for the same.

            – Pranay Jaiswal
            10 hours ago










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "459"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254061%2fhow-to-confirm-one-of-many-httpcalloutmock-has-been-used%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          Declare a variable in your mock class, and set its value in the respond method. if that variable is true at the end of your test , it means mock was used and callout was done.



          global class CalloutMock1 implements HttpCalloutMock 

          global boolean isCalled = false;
          global HTTPResponse respond(HTTPRequest req)
          isCalled = true;
          // Create a fake response.
          // Set response values, and
          // return response.




          Test Class:



          CalloutMock1 cm1= new CalloutMock1();
          Test.setMock(HttpCalloutMock.class, cm1);

          //Call your code.


          System.assert(cm1.isCalled);



          Edit :Based on your updated code:



          public without sharing class MultiRequestMock implements HttpCalloutMock 

          public Map<String, HttpCalloutMock> requests;
          public Set<String> usedEndpoints = new Set<String>();

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


          public HTTPResponse respond(HTTPRequest req)

          HttpCalloutMock mock = requests.get(req.getEndpoint());
          usedEndpoints.add(req.getEndpoint());

          if (mock != null)
          return mock.respond(req);


          throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




          Test Class :



          MultiRequestMock mm = new MultiRequestMock (new Map<String, HttpCalloutMock>());
          mm.addRequestMock();//

          //Do your callouts

          //Then Assert here

          System.assert(mm.usedEndpoints.contains('Your endpoint') , 'Your Endpoint not called'); //Your endpoint called
          System.assert(mm.usedEndpoints.size() == mm.requests.size() , 'Not all mocks were consumed');





          share|improve this answer

























          • Thanks. I've updated my question to expand on my HttpCalloutMock implementation

            – Robs
            10 hours ago






          • 1





            Hi @Robs provided pseudo code, for the same.

            – Pranay Jaiswal
            10 hours ago















          3














          Declare a variable in your mock class, and set its value in the respond method. if that variable is true at the end of your test , it means mock was used and callout was done.



          global class CalloutMock1 implements HttpCalloutMock 

          global boolean isCalled = false;
          global HTTPResponse respond(HTTPRequest req)
          isCalled = true;
          // Create a fake response.
          // Set response values, and
          // return response.




          Test Class:



          CalloutMock1 cm1= new CalloutMock1();
          Test.setMock(HttpCalloutMock.class, cm1);

          //Call your code.


          System.assert(cm1.isCalled);



          Edit :Based on your updated code:



          public without sharing class MultiRequestMock implements HttpCalloutMock 

          public Map<String, HttpCalloutMock> requests;
          public Set<String> usedEndpoints = new Set<String>();

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


          public HTTPResponse respond(HTTPRequest req)

          HttpCalloutMock mock = requests.get(req.getEndpoint());
          usedEndpoints.add(req.getEndpoint());

          if (mock != null)
          return mock.respond(req);


          throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




          Test Class :



          MultiRequestMock mm = new MultiRequestMock (new Map<String, HttpCalloutMock>());
          mm.addRequestMock();//

          //Do your callouts

          //Then Assert here

          System.assert(mm.usedEndpoints.contains('Your endpoint') , 'Your Endpoint not called'); //Your endpoint called
          System.assert(mm.usedEndpoints.size() == mm.requests.size() , 'Not all mocks were consumed');





          share|improve this answer

























          • Thanks. I've updated my question to expand on my HttpCalloutMock implementation

            – Robs
            10 hours ago






          • 1





            Hi @Robs provided pseudo code, for the same.

            – Pranay Jaiswal
            10 hours ago













          3












          3








          3







          Declare a variable in your mock class, and set its value in the respond method. if that variable is true at the end of your test , it means mock was used and callout was done.



          global class CalloutMock1 implements HttpCalloutMock 

          global boolean isCalled = false;
          global HTTPResponse respond(HTTPRequest req)
          isCalled = true;
          // Create a fake response.
          // Set response values, and
          // return response.




          Test Class:



          CalloutMock1 cm1= new CalloutMock1();
          Test.setMock(HttpCalloutMock.class, cm1);

          //Call your code.


          System.assert(cm1.isCalled);



          Edit :Based on your updated code:



          public without sharing class MultiRequestMock implements HttpCalloutMock 

          public Map<String, HttpCalloutMock> requests;
          public Set<String> usedEndpoints = new Set<String>();

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


          public HTTPResponse respond(HTTPRequest req)

          HttpCalloutMock mock = requests.get(req.getEndpoint());
          usedEndpoints.add(req.getEndpoint());

          if (mock != null)
          return mock.respond(req);


          throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




          Test Class :



          MultiRequestMock mm = new MultiRequestMock (new Map<String, HttpCalloutMock>());
          mm.addRequestMock();//

          //Do your callouts

          //Then Assert here

          System.assert(mm.usedEndpoints.contains('Your endpoint') , 'Your Endpoint not called'); //Your endpoint called
          System.assert(mm.usedEndpoints.size() == mm.requests.size() , 'Not all mocks were consumed');





          share|improve this answer















          Declare a variable in your mock class, and set its value in the respond method. if that variable is true at the end of your test , it means mock was used and callout was done.



          global class CalloutMock1 implements HttpCalloutMock 

          global boolean isCalled = false;
          global HTTPResponse respond(HTTPRequest req)
          isCalled = true;
          // Create a fake response.
          // Set response values, and
          // return response.




          Test Class:



          CalloutMock1 cm1= new CalloutMock1();
          Test.setMock(HttpCalloutMock.class, cm1);

          //Call your code.


          System.assert(cm1.isCalled);



          Edit :Based on your updated code:



          public without sharing class MultiRequestMock implements HttpCalloutMock 

          public Map<String, HttpCalloutMock> requests;
          public Set<String> usedEndpoints = new Set<String>();

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


          public HTTPResponse respond(HTTPRequest req)

          HttpCalloutMock mock = requests.get(req.getEndpoint());
          usedEndpoints.add(req.getEndpoint());

          if (mock != null)
          return mock.respond(req);


          throw new CustomException('Mock for end point not found: ' + req.getEndpoint());


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




          Test Class :



          MultiRequestMock mm = new MultiRequestMock (new Map<String, HttpCalloutMock>());
          mm.addRequestMock();//

          //Do your callouts

          //Then Assert here

          System.assert(mm.usedEndpoints.contains('Your endpoint') , 'Your Endpoint not called'); //Your endpoint called
          System.assert(mm.usedEndpoints.size() == mm.requests.size() , 'Not all mocks were consumed');






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 10 hours ago

























          answered 11 hours ago









          Pranay JaiswalPranay Jaiswal

          17.8k42855




          17.8k42855












          • Thanks. I've updated my question to expand on my HttpCalloutMock implementation

            – Robs
            10 hours ago






          • 1





            Hi @Robs provided pseudo code, for the same.

            – Pranay Jaiswal
            10 hours ago

















          • Thanks. I've updated my question to expand on my HttpCalloutMock implementation

            – Robs
            10 hours ago






          • 1





            Hi @Robs provided pseudo code, for the same.

            – Pranay Jaiswal
            10 hours ago
















          Thanks. I've updated my question to expand on my HttpCalloutMock implementation

          – Robs
          10 hours ago





          Thanks. I've updated my question to expand on my HttpCalloutMock implementation

          – Robs
          10 hours ago




          1




          1





          Hi @Robs provided pseudo code, for the same.

          – Pranay Jaiswal
          10 hours ago





          Hi @Robs provided pseudo code, for the same.

          – Pranay Jaiswal
          10 hours ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Salesforce Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254061%2fhow-to-confirm-one-of-many-httpcalloutmock-has-been-used%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          How should I use the fbox command correctly to avoid producing a Bad Box message?How to put a long piece of text in a box?How to specify height and width of fboxIs there an arrayrulecolor-like command to change the rule color of fbox?What is the command to highlight bad boxes in pdf?Why does fbox sometimes place the box *over* the graphic image?how to put the text in the boxHow to create command for a box where text inside the box can automatically adjust?how can I make an fbox like command with certain color, shape and width of border?how to use fbox in align modeFbox increase the spacing between the box and it content (inner margin)how to change the box height of an equationWhat is the use of the hbox in a newcommand command?

          152 Atala Notae | Nexus externi | Tabula navigationis"Discovery Circumstances: Numbered Minor Planets"2000152Small-Body Database

          Doxepinum Nexus interni Notae | Tabula navigationis3158DB01142WHOa682390"Structural Analysis of the Histamine H1 Receptor""Transdermal and Topical Drug Administration in the Treatment of Pain""Antidepressants as antipruritic agents: A review"