You need to sign in to do that
Don't have an account?
Nihon Taisai
Cannot specify Id in an insert call: [Id] in unit test for HttpPost
I have this error because I duplicate my object by method's calling. How can I fix it?
My HttpPost:
My HttpPost:
public static Avia__c ParseRequest(RestRequest req) { Avia__c a = new Avia__c(); String body = req.requestBody.toString(); a = (Avia__c)JSON.deserialize(body, Avia__c.class); return a; } @HttpPost global static Id doPost() { RestRequest req = RestContext.request; Avia__c a = ParseRequest(req); insert a; return a.id; }My test:
@isTest static void testPost() { Avia__c testRecord = new Avia__c (Name = 'Name'); String json = System.JSON.serialize(testRecord); RestRequest request = new RestRequest(); request.requestBody = Blob.valueOf(json); request.httpMethod = 'POST'; request.addHeader('Content-Type', 'application/json'); request.requestUri = System.URL.getSalesforceBaseUrl().toExternalForm() + '/services/apexrest/Job_Advertisement__c/' + testRecord.Id; RestContext.request = request; Avia__c ourRecord = Endpoint.ParseRequest(request); System.assertEquals(testRecord, ourRecord); Id tId = Endpoint.doPost(); //here is an error System.assertEquals(testRecord.Id, tId); }I just call the method and it inserts a record twice. So I become Id's conflict. How can I change it? Of caurse I can upsert it, but I also have a PUT method, so I don't need it in my POST.