Assertions In A Mock Callout TestSystem.CalloutException: You have uncommitted work pending. Please commit or rollbackREST API calls to 3rd Party (Pardot), multiple @future calloutshow to test a future method which makes callouts?“Required fields are missing: [ProfileId]: [ProfileId]” when running Apex Class Test for ChatterAnswersAuthProviderRegTestCode Coverage to Test Custom Object Public ListApex Test Class Assert for Void?Testing future callout methodHow to cover global class and method in test classTest.setMock not working in Apex testHello i am not able to get the result from this test class
Like totally amazing interchangeable sister outfits II: The Revenge
What does ゆーか mean?
A Note on N!
Can we say “you can pay when the order gets ready”?
Was there a Viking Exchange as well as a Columbian one?
Map of water taps to fill bottles
Do I have an "anti-research" personality?
How did Captain America manage to do this?
Aliens crash on Earth and go into stasis to wait for technology to fix their ship
How to fry ground beef so it is well-browned
Don’t seats that recline flat defeat the purpose of having seatbelts?
Is there a way to generate a list of distinct numbers such that no two subsets ever have an equal sum?
How can I practically buy stocks?
What happens to Mjolnir (Thor's hammer) at the end of Endgame?
Relationship between strut and baselineskip
What term is being referred to with "reflected-sound-of-underground-spirits"?
Why was the Spitfire's elliptical wing almost uncopied by other aircraft of World War 2?
Apply MapThread to all but one variable
What are the characteristics of a typeless programming language?
Is it idiomatic to construct against `this`
Critique of timeline aesthetic
How much cash can I safely carry into the USA and avoid civil forfeiture?
Two field separators (colon and space) in awk
What is the most expensive material in the world that could be used to create Pun-Pun's lute?
Assertions In A Mock Callout Test
System.CalloutException: You have uncommitted work pending. Please commit or rollbackREST API calls to 3rd Party (Pardot), multiple @future calloutshow to test a future method which makes callouts?“Required fields are missing: [ProfileId]: [ProfileId]” when running Apex Class Test for ChatterAnswersAuthProviderRegTestCode Coverage to Test Custom Object Public ListApex Test Class Assert for Void?Testing future callout methodHow to cover global class and method in test classTest.setMock not working in Apex testHello i am not able to get the result from this test class
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Working on my first call out class. When a contact is created or has an email changed we need to make a call out to a third party service that verifies the email address.
Everything is working excep the final assertion. I expect a result of valid but the result is null. I have been reading through the documentation but not making sense of the rules around DML and mocks. I have included my call out class, test class and Mock. How can I get my assertion to pass and validate that the field I want updated by my callout has been updated?
Web-service
public with sharing class NeverBounceCallout
@Future(callout=true)
public static void checkNeverBounce(Id id)
Contact contact = [SELECT Email, Never_Bounce_Result__c FROM Contact WHERE Id =: id LIMIT 1];
String email = contact.Email;
String url = 'https://api.neverbounce.com/v4/single/check?key=api_key&email=' + email;
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint(url);
request.setMethod('GET');
HttpResponse response = http.send(request);
if(response.getStatusCode()==200)
Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
contact.Never_Bounce_Result__c = (String)results.get('result');
System.debug('json body = ' + results);
update contact;
My Mock
@IsTest
global class NeverBounceMock implements HttpCalloutMock{
global HttpResponse respond(HttpRequest request)
System.assertEquals('GET', request.getMethod());
HttpResponse response = new HttpResponse();
response.setHeader('Content-Type', 'application/json');
response.setStatusCode(200);
response.setBody('"status" : "success", "result" : "valid"');
return response;
Test
@IsTest
private class NeverBounceTest
@IsTest
static void NeverbounceEmailTest()
Account a = new Account(Name = 'Test acc');
insert a;
Contact c = new Contact(LastName = 'Test Con', AccountId = a.Id, Email='Test@test.com');
insert c;
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
//System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
Test.stopTest();
apex rest-api
add a comment |
Working on my first call out class. When a contact is created or has an email changed we need to make a call out to a third party service that verifies the email address.
Everything is working excep the final assertion. I expect a result of valid but the result is null. I have been reading through the documentation but not making sense of the rules around DML and mocks. I have included my call out class, test class and Mock. How can I get my assertion to pass and validate that the field I want updated by my callout has been updated?
Web-service
public with sharing class NeverBounceCallout
@Future(callout=true)
public static void checkNeverBounce(Id id)
Contact contact = [SELECT Email, Never_Bounce_Result__c FROM Contact WHERE Id =: id LIMIT 1];
String email = contact.Email;
String url = 'https://api.neverbounce.com/v4/single/check?key=api_key&email=' + email;
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint(url);
request.setMethod('GET');
HttpResponse response = http.send(request);
if(response.getStatusCode()==200)
Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
contact.Never_Bounce_Result__c = (String)results.get('result');
System.debug('json body = ' + results);
update contact;
My Mock
@IsTest
global class NeverBounceMock implements HttpCalloutMock{
global HttpResponse respond(HttpRequest request)
System.assertEquals('GET', request.getMethod());
HttpResponse response = new HttpResponse();
response.setHeader('Content-Type', 'application/json');
response.setStatusCode(200);
response.setBody('"status" : "success", "result" : "valid"');
return response;
Test
@IsTest
private class NeverBounceTest
@IsTest
static void NeverbounceEmailTest()
Account a = new Account(Name = 'Test acc');
insert a;
Contact c = new Contact(LastName = 'Test Con', AccountId = a.Id, Email='Test@test.com');
insert c;
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
//System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
Test.stopTest();
apex rest-api
1
Do you intend to set this --contact.Never_Bounce_Result__c = (String)results.get('result');
instead? The reason being your mock response returns an attribute namedresult
instead ofresults
.
– Jayant Das
Apr 22 at 17:03
add a comment |
Working on my first call out class. When a contact is created or has an email changed we need to make a call out to a third party service that verifies the email address.
Everything is working excep the final assertion. I expect a result of valid but the result is null. I have been reading through the documentation but not making sense of the rules around DML and mocks. I have included my call out class, test class and Mock. How can I get my assertion to pass and validate that the field I want updated by my callout has been updated?
Web-service
public with sharing class NeverBounceCallout
@Future(callout=true)
public static void checkNeverBounce(Id id)
Contact contact = [SELECT Email, Never_Bounce_Result__c FROM Contact WHERE Id =: id LIMIT 1];
String email = contact.Email;
String url = 'https://api.neverbounce.com/v4/single/check?key=api_key&email=' + email;
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint(url);
request.setMethod('GET');
HttpResponse response = http.send(request);
if(response.getStatusCode()==200)
Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
contact.Never_Bounce_Result__c = (String)results.get('result');
System.debug('json body = ' + results);
update contact;
My Mock
@IsTest
global class NeverBounceMock implements HttpCalloutMock{
global HttpResponse respond(HttpRequest request)
System.assertEquals('GET', request.getMethod());
HttpResponse response = new HttpResponse();
response.setHeader('Content-Type', 'application/json');
response.setStatusCode(200);
response.setBody('"status" : "success", "result" : "valid"');
return response;
Test
@IsTest
private class NeverBounceTest
@IsTest
static void NeverbounceEmailTest()
Account a = new Account(Name = 'Test acc');
insert a;
Contact c = new Contact(LastName = 'Test Con', AccountId = a.Id, Email='Test@test.com');
insert c;
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
//System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
Test.stopTest();
apex rest-api
Working on my first call out class. When a contact is created or has an email changed we need to make a call out to a third party service that verifies the email address.
Everything is working excep the final assertion. I expect a result of valid but the result is null. I have been reading through the documentation but not making sense of the rules around DML and mocks. I have included my call out class, test class and Mock. How can I get my assertion to pass and validate that the field I want updated by my callout has been updated?
Web-service
public with sharing class NeverBounceCallout
@Future(callout=true)
public static void checkNeverBounce(Id id)
Contact contact = [SELECT Email, Never_Bounce_Result__c FROM Contact WHERE Id =: id LIMIT 1];
String email = contact.Email;
String url = 'https://api.neverbounce.com/v4/single/check?key=api_key&email=' + email;
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint(url);
request.setMethod('GET');
HttpResponse response = http.send(request);
if(response.getStatusCode()==200)
Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
contact.Never_Bounce_Result__c = (String)results.get('result');
System.debug('json body = ' + results);
update contact;
My Mock
@IsTest
global class NeverBounceMock implements HttpCalloutMock{
global HttpResponse respond(HttpRequest request)
System.assertEquals('GET', request.getMethod());
HttpResponse response = new HttpResponse();
response.setHeader('Content-Type', 'application/json');
response.setStatusCode(200);
response.setBody('"status" : "success", "result" : "valid"');
return response;
Test
@IsTest
private class NeverBounceTest
@IsTest
static void NeverbounceEmailTest()
Account a = new Account(Name = 'Test acc');
insert a;
Contact c = new Contact(LastName = 'Test Con', AccountId = a.Id, Email='Test@test.com');
insert c;
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
//System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
Test.stopTest();
apex rest-api
apex rest-api
edited Apr 22 at 18:25
Jayant Das
19.5k21331
19.5k21331
asked Apr 22 at 16:24
Brooks JohnsonBrooks Johnson
1719
1719
1
Do you intend to set this --contact.Never_Bounce_Result__c = (String)results.get('result');
instead? The reason being your mock response returns an attribute namedresult
instead ofresults
.
– Jayant Das
Apr 22 at 17:03
add a comment |
1
Do you intend to set this --contact.Never_Bounce_Result__c = (String)results.get('result');
instead? The reason being your mock response returns an attribute namedresult
instead ofresults
.
– Jayant Das
Apr 22 at 17:03
1
1
Do you intend to set this --
contact.Never_Bounce_Result__c = (String)results.get('result');
instead? The reason being your mock response returns an attribute named result
instead of results
.– Jayant Das
Apr 22 at 17:03
Do you intend to set this --
contact.Never_Bounce_Result__c = (String)results.get('result');
instead? The reason being your mock response returns an attribute named result
instead of results
.– Jayant Das
Apr 22 at 17:03
add a comment |
2 Answers
2
active
oldest
votes
The problem here is because of the way you are testing a future
callout.
Because the updates are being carried out in a future method, thus while asserting, you don't get the value while you are asserting it between Test.startTest()
and Test.stopTest()
. Refer to this trailhead on how to test future methods, except below (emphasis mine).
The system collects all asynchronous calls made after the
startTest
. WhenstopTest
is executed, all these collected asynchronous processes are then run synchronously. You can then assert that the asynchronous call operated properly.
So you will need to make the assertions in your test class, after Test.stopTest()
.
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Test.stopTest();
// assertion now
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
You will still need the below details to make sure your response returns correct value.
Your mock returns:
response.setBody('"status" : "success", "result" : "valid"');
and that you are trying to set the value of an attribute named results
(notice the extra s here):
contact.Never_Bounce_Result__c = (String)results.get('results');
And thus your field Never_Bounce_Result__c
would have never been set with the expected value here, thus failing your assertion.
For your assertion to work, you will need to set result
as expected in the response and that it should be written as:
contact.Never_Bounce_Result__c = (String)results.get('result'); // no ending s here
Or, if you expect results
, then that attribute needs to be set in the response accordingly.
Hi Jayant and thank you. I did make that change you suggested. But forgot to edit my post. The assertion still fails. I will update now.
– Brooks Johnson
Apr 22 at 17:20
Have you put a debug to see what do you receive when you query it, no assertion, just a debug.
– Jayant Das
Apr 22 at 17:21
1
@BrooksJohnson I have updated my answer based on what I found while trying to replicate this issue.
– Jayant Das
Apr 22 at 18:14
1
@JayantDas Was JUST about to write a new answer with that information!
– Thomas Taylor
Apr 22 at 18:29
1
@ThomasTaylor I completely missed thefuture
annotation at the first place and had in fact thought all wrong as how it was behaving here.
– Jayant Das
Apr 22 at 18:30
|
show 2 more comments
Notice how you set the value in this field:
contact.Never_Bounce_Result__c = (String)results.get('results');
Does your mock ever set a results
attribute? No. You need to add this attribute to your JSON map ('"status" : "success", ...'
).
Hi Adrian, I made that change and verified it in the debug log but the assertion is still failing. I updated the code above. And thank you for your help.
– Brooks Johnson
Apr 22 at 16:49
@BrooksJohnson Check your singular/plural. It'sresult
in the mock's response andresults
in the class. BTW - you'd have been better off debugging the Contact field in the class, since that's what your assert is testing.
– Thomas Taylor
Apr 22 at 17:03
Yeah you need to use..., "results": "value"
.
– Adrian Larson♦
Apr 22 at 18:18
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f258668%2fassertions-in-a-mock-callout-test%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
The problem here is because of the way you are testing a future
callout.
Because the updates are being carried out in a future method, thus while asserting, you don't get the value while you are asserting it between Test.startTest()
and Test.stopTest()
. Refer to this trailhead on how to test future methods, except below (emphasis mine).
The system collects all asynchronous calls made after the
startTest
. WhenstopTest
is executed, all these collected asynchronous processes are then run synchronously. You can then assert that the asynchronous call operated properly.
So you will need to make the assertions in your test class, after Test.stopTest()
.
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Test.stopTest();
// assertion now
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
You will still need the below details to make sure your response returns correct value.
Your mock returns:
response.setBody('"status" : "success", "result" : "valid"');
and that you are trying to set the value of an attribute named results
(notice the extra s here):
contact.Never_Bounce_Result__c = (String)results.get('results');
And thus your field Never_Bounce_Result__c
would have never been set with the expected value here, thus failing your assertion.
For your assertion to work, you will need to set result
as expected in the response and that it should be written as:
contact.Never_Bounce_Result__c = (String)results.get('result'); // no ending s here
Or, if you expect results
, then that attribute needs to be set in the response accordingly.
Hi Jayant and thank you. I did make that change you suggested. But forgot to edit my post. The assertion still fails. I will update now.
– Brooks Johnson
Apr 22 at 17:20
Have you put a debug to see what do you receive when you query it, no assertion, just a debug.
– Jayant Das
Apr 22 at 17:21
1
@BrooksJohnson I have updated my answer based on what I found while trying to replicate this issue.
– Jayant Das
Apr 22 at 18:14
1
@JayantDas Was JUST about to write a new answer with that information!
– Thomas Taylor
Apr 22 at 18:29
1
@ThomasTaylor I completely missed thefuture
annotation at the first place and had in fact thought all wrong as how it was behaving here.
– Jayant Das
Apr 22 at 18:30
|
show 2 more comments
The problem here is because of the way you are testing a future
callout.
Because the updates are being carried out in a future method, thus while asserting, you don't get the value while you are asserting it between Test.startTest()
and Test.stopTest()
. Refer to this trailhead on how to test future methods, except below (emphasis mine).
The system collects all asynchronous calls made after the
startTest
. WhenstopTest
is executed, all these collected asynchronous processes are then run synchronously. You can then assert that the asynchronous call operated properly.
So you will need to make the assertions in your test class, after Test.stopTest()
.
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Test.stopTest();
// assertion now
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
You will still need the below details to make sure your response returns correct value.
Your mock returns:
response.setBody('"status" : "success", "result" : "valid"');
and that you are trying to set the value of an attribute named results
(notice the extra s here):
contact.Never_Bounce_Result__c = (String)results.get('results');
And thus your field Never_Bounce_Result__c
would have never been set with the expected value here, thus failing your assertion.
For your assertion to work, you will need to set result
as expected in the response and that it should be written as:
contact.Never_Bounce_Result__c = (String)results.get('result'); // no ending s here
Or, if you expect results
, then that attribute needs to be set in the response accordingly.
Hi Jayant and thank you. I did make that change you suggested. But forgot to edit my post. The assertion still fails. I will update now.
– Brooks Johnson
Apr 22 at 17:20
Have you put a debug to see what do you receive when you query it, no assertion, just a debug.
– Jayant Das
Apr 22 at 17:21
1
@BrooksJohnson I have updated my answer based on what I found while trying to replicate this issue.
– Jayant Das
Apr 22 at 18:14
1
@JayantDas Was JUST about to write a new answer with that information!
– Thomas Taylor
Apr 22 at 18:29
1
@ThomasTaylor I completely missed thefuture
annotation at the first place and had in fact thought all wrong as how it was behaving here.
– Jayant Das
Apr 22 at 18:30
|
show 2 more comments
The problem here is because of the way you are testing a future
callout.
Because the updates are being carried out in a future method, thus while asserting, you don't get the value while you are asserting it between Test.startTest()
and Test.stopTest()
. Refer to this trailhead on how to test future methods, except below (emphasis mine).
The system collects all asynchronous calls made after the
startTest
. WhenstopTest
is executed, all these collected asynchronous processes are then run synchronously. You can then assert that the asynchronous call operated properly.
So you will need to make the assertions in your test class, after Test.stopTest()
.
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Test.stopTest();
// assertion now
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
You will still need the below details to make sure your response returns correct value.
Your mock returns:
response.setBody('"status" : "success", "result" : "valid"');
and that you are trying to set the value of an attribute named results
(notice the extra s here):
contact.Never_Bounce_Result__c = (String)results.get('results');
And thus your field Never_Bounce_Result__c
would have never been set with the expected value here, thus failing your assertion.
For your assertion to work, you will need to set result
as expected in the response and that it should be written as:
contact.Never_Bounce_Result__c = (String)results.get('result'); // no ending s here
Or, if you expect results
, then that attribute needs to be set in the response accordingly.
The problem here is because of the way you are testing a future
callout.
Because the updates are being carried out in a future method, thus while asserting, you don't get the value while you are asserting it between Test.startTest()
and Test.stopTest()
. Refer to this trailhead on how to test future methods, except below (emphasis mine).
The system collects all asynchronous calls made after the
startTest
. WhenstopTest
is executed, all these collected asynchronous processes are then run synchronously. You can then assert that the asynchronous call operated properly.
So you will need to make the assertions in your test class, after Test.stopTest()
.
Test.startTest();
Test.setMock(HttpCalloutMock.class, new NeverBounceMock());
NeverBounceCallout.checkNeverBounce(c.Id);
Test.stopTest();
// assertion now
Contact contactToCheck = [SELECT Never_Bounce_Result__c FROM Contact WHERE Id =: c.Id LIMIT 1];
System.assertEquals('valid', contactToCheck.Never_Bounce_Result__c);
You will still need the below details to make sure your response returns correct value.
Your mock returns:
response.setBody('"status" : "success", "result" : "valid"');
and that you are trying to set the value of an attribute named results
(notice the extra s here):
contact.Never_Bounce_Result__c = (String)results.get('results');
And thus your field Never_Bounce_Result__c
would have never been set with the expected value here, thus failing your assertion.
For your assertion to work, you will need to set result
as expected in the response and that it should be written as:
contact.Never_Bounce_Result__c = (String)results.get('result'); // no ending s here
Or, if you expect results
, then that attribute needs to be set in the response accordingly.
edited Apr 22 at 18:27
answered Apr 22 at 17:06
Jayant DasJayant Das
19.5k21331
19.5k21331
Hi Jayant and thank you. I did make that change you suggested. But forgot to edit my post. The assertion still fails. I will update now.
– Brooks Johnson
Apr 22 at 17:20
Have you put a debug to see what do you receive when you query it, no assertion, just a debug.
– Jayant Das
Apr 22 at 17:21
1
@BrooksJohnson I have updated my answer based on what I found while trying to replicate this issue.
– Jayant Das
Apr 22 at 18:14
1
@JayantDas Was JUST about to write a new answer with that information!
– Thomas Taylor
Apr 22 at 18:29
1
@ThomasTaylor I completely missed thefuture
annotation at the first place and had in fact thought all wrong as how it was behaving here.
– Jayant Das
Apr 22 at 18:30
|
show 2 more comments
Hi Jayant and thank you. I did make that change you suggested. But forgot to edit my post. The assertion still fails. I will update now.
– Brooks Johnson
Apr 22 at 17:20
Have you put a debug to see what do you receive when you query it, no assertion, just a debug.
– Jayant Das
Apr 22 at 17:21
1
@BrooksJohnson I have updated my answer based on what I found while trying to replicate this issue.
– Jayant Das
Apr 22 at 18:14
1
@JayantDas Was JUST about to write a new answer with that information!
– Thomas Taylor
Apr 22 at 18:29
1
@ThomasTaylor I completely missed thefuture
annotation at the first place and had in fact thought all wrong as how it was behaving here.
– Jayant Das
Apr 22 at 18:30
Hi Jayant and thank you. I did make that change you suggested. But forgot to edit my post. The assertion still fails. I will update now.
– Brooks Johnson
Apr 22 at 17:20
Hi Jayant and thank you. I did make that change you suggested. But forgot to edit my post. The assertion still fails. I will update now.
– Brooks Johnson
Apr 22 at 17:20
Have you put a debug to see what do you receive when you query it, no assertion, just a debug.
– Jayant Das
Apr 22 at 17:21
Have you put a debug to see what do you receive when you query it, no assertion, just a debug.
– Jayant Das
Apr 22 at 17:21
1
1
@BrooksJohnson I have updated my answer based on what I found while trying to replicate this issue.
– Jayant Das
Apr 22 at 18:14
@BrooksJohnson I have updated my answer based on what I found while trying to replicate this issue.
– Jayant Das
Apr 22 at 18:14
1
1
@JayantDas Was JUST about to write a new answer with that information!
– Thomas Taylor
Apr 22 at 18:29
@JayantDas Was JUST about to write a new answer with that information!
– Thomas Taylor
Apr 22 at 18:29
1
1
@ThomasTaylor I completely missed the
future
annotation at the first place and had in fact thought all wrong as how it was behaving here.– Jayant Das
Apr 22 at 18:30
@ThomasTaylor I completely missed the
future
annotation at the first place and had in fact thought all wrong as how it was behaving here.– Jayant Das
Apr 22 at 18:30
|
show 2 more comments
Notice how you set the value in this field:
contact.Never_Bounce_Result__c = (String)results.get('results');
Does your mock ever set a results
attribute? No. You need to add this attribute to your JSON map ('"status" : "success", ...'
).
Hi Adrian, I made that change and verified it in the debug log but the assertion is still failing. I updated the code above. And thank you for your help.
– Brooks Johnson
Apr 22 at 16:49
@BrooksJohnson Check your singular/plural. It'sresult
in the mock's response andresults
in the class. BTW - you'd have been better off debugging the Contact field in the class, since that's what your assert is testing.
– Thomas Taylor
Apr 22 at 17:03
Yeah you need to use..., "results": "value"
.
– Adrian Larson♦
Apr 22 at 18:18
add a comment |
Notice how you set the value in this field:
contact.Never_Bounce_Result__c = (String)results.get('results');
Does your mock ever set a results
attribute? No. You need to add this attribute to your JSON map ('"status" : "success", ...'
).
Hi Adrian, I made that change and verified it in the debug log but the assertion is still failing. I updated the code above. And thank you for your help.
– Brooks Johnson
Apr 22 at 16:49
@BrooksJohnson Check your singular/plural. It'sresult
in the mock's response andresults
in the class. BTW - you'd have been better off debugging the Contact field in the class, since that's what your assert is testing.
– Thomas Taylor
Apr 22 at 17:03
Yeah you need to use..., "results": "value"
.
– Adrian Larson♦
Apr 22 at 18:18
add a comment |
Notice how you set the value in this field:
contact.Never_Bounce_Result__c = (String)results.get('results');
Does your mock ever set a results
attribute? No. You need to add this attribute to your JSON map ('"status" : "success", ...'
).
Notice how you set the value in this field:
contact.Never_Bounce_Result__c = (String)results.get('results');
Does your mock ever set a results
attribute? No. You need to add this attribute to your JSON map ('"status" : "success", ...'
).
answered Apr 22 at 16:27
Adrian Larson♦Adrian Larson
111k19122260
111k19122260
Hi Adrian, I made that change and verified it in the debug log but the assertion is still failing. I updated the code above. And thank you for your help.
– Brooks Johnson
Apr 22 at 16:49
@BrooksJohnson Check your singular/plural. It'sresult
in the mock's response andresults
in the class. BTW - you'd have been better off debugging the Contact field in the class, since that's what your assert is testing.
– Thomas Taylor
Apr 22 at 17:03
Yeah you need to use..., "results": "value"
.
– Adrian Larson♦
Apr 22 at 18:18
add a comment |
Hi Adrian, I made that change and verified it in the debug log but the assertion is still failing. I updated the code above. And thank you for your help.
– Brooks Johnson
Apr 22 at 16:49
@BrooksJohnson Check your singular/plural. It'sresult
in the mock's response andresults
in the class. BTW - you'd have been better off debugging the Contact field in the class, since that's what your assert is testing.
– Thomas Taylor
Apr 22 at 17:03
Yeah you need to use..., "results": "value"
.
– Adrian Larson♦
Apr 22 at 18:18
Hi Adrian, I made that change and verified it in the debug log but the assertion is still failing. I updated the code above. And thank you for your help.
– Brooks Johnson
Apr 22 at 16:49
Hi Adrian, I made that change and verified it in the debug log but the assertion is still failing. I updated the code above. And thank you for your help.
– Brooks Johnson
Apr 22 at 16:49
@BrooksJohnson Check your singular/plural. It's
result
in the mock's response and results
in the class. BTW - you'd have been better off debugging the Contact field in the class, since that's what your assert is testing.– Thomas Taylor
Apr 22 at 17:03
@BrooksJohnson Check your singular/plural. It's
result
in the mock's response and results
in the class. BTW - you'd have been better off debugging the Contact field in the class, since that's what your assert is testing.– Thomas Taylor
Apr 22 at 17:03
Yeah you need to use
..., "results": "value"
.– Adrian Larson♦
Apr 22 at 18:18
Yeah you need to use
..., "results": "value"
.– Adrian Larson♦
Apr 22 at 18:18
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f258668%2fassertions-in-a-mock-callout-test%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
1
Do you intend to set this --
contact.Never_Bounce_Result__c = (String)results.get('result');
instead? The reason being your mock response returns an attribute namedresult
instead ofresults
.– Jayant Das
Apr 22 at 17:03