Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Test.loadData with Custom sObject Throws Exception

I am loading a CSV file via Static Resourced to test my APEX code. I am using the following code in my test:

List<Territory_Zip_Code__c> territoryData = Test.loadData(Territory_Zip_Code__c.sObjectType, TERRITORY_ZIP_CODES_STATIC_RESOURCE_NAME);

The first few lines of the CSV file look like so:

Territory__c,Zip_Code__c
ABC,123
DEF,456

I am getting the following error:

System.StringException: Unknown field: Territory__c

Territory__c is a valid API field name for my custom sObject.

I've also tried adding the sObject name in front of the field name, like My_Territory__c.Territory__c but that didn't work either.

In addition, I tried using the field name, instead of the API name (for example, Territory) but that didn't work either.

There are lots of examples of using Test.loadData with built-in sObjects, such as Account and Contacts, but no examples showing custom sObjects. I'm starting to think this just isn't possible with custom objects.

like image 913
Swisher Sweet Avatar asked Nov 01 '22 12:11

Swisher Sweet


1 Answers

Using test.loadData most certainly does work with custom objects. The test data CSV header only needs the field names, as you have in your example.

Your code also looks good. The only difference I could spot is that your variable is a strongly typed list. In my code I use a List which seems to work:

List<sObject> testdata = Test.loadData(MyCustomObject__c.sObjectType, 'mytestdatafile');
like image 199
pjh68 Avatar answered Nov 20 '22 10:11

pjh68