2012-04-05 1 views
4

Я разрабатываю веб-сервис Rest на платформе Salesforce.com. Я написал его, и он работает правильно и дает точные ответы, когда я его называю. Проблема заключается в том, как проверить егоТестирование веб-службы отдыха в salesforce.com

@RestResource(urlMapping='/feedpost/*') 

    global class Feedpost9 
    { 
     @HttpPut 
     global static User updateCase() { 
     RestRequest req=RestContext.request; 
     User user=[SELECT id from User where email=:req.headers.get('email') LIMIT 1]; 
     return user;   
    } 

} 

Теперь моя задача состоит в том, чтобы проверить этот метод updateCase службы REST веб. Для тестирования метода запроса POST я должен установить параметры в вызове метода, но в случае метода PUT - как установить RestContext.request в тестовом классе?

+1

Salesforce стек обмена является отличным местом для подобных вопросов –

ответ

5

Есть два вопроса, вы должны бороться в ваших модульных тестов:

  • Необходимость действительного RestRequest
  • Отсутствие данных в тестовой среде

Вот основная техника к созданию объекта запроса, который хочет ваш метод

global class Feedpost9 { 

    // your methods here... 

    static testMethod void testRest() { 
     // set up the request object 
     System.RestContext.request = new RestRequest(); 
     RestContext.request.requestURI = '/feedpost/whatever'; 
     RestContext.request.addHeader('email', '[email protected]'); 
     // Invoke the method directly 
     Feedpost9.updateCase(); 
    } 
} 

Другой p Возможно, у вас есть проблема с тем, что в Salesforce v24 и выше модульных тестов по умолчанию у вас нет доступа к вашим данным. Это потому, что модульные тесты запускаются в виде песочницы, у которой нет данных, но do содержат ваши метаданные (RecordTypes и т. Д.). Итак, есть два метода получения данных для ваших тестов:

  1. Используйте аннотацию @isTest(SeeAllData=true) на свой метод. Это даст возможность тестовому методу доступа к вашим данным.
  2. Попросите свой тестовый метод построить/вставить тестовые данные, а затем выполнить тесты против этих данных. Когда тестирование закончится, ваши тестовые данные чудесным образом исчезнут из вашей базы данных.

Я предпочитаю использовать позже метод, но иногда я обманываю ...

+2

Если вы планируете распространять этот код (например, как управляемый пакет), я бы настоятельно советовал создавать ваши собственные тестовые данные. Вы не можете быть уверены, что у организации, у которой есть код, уже есть данные теста. –

+1

Использование существующих данных для тестирования - это ленивое исправление, которое обязательно укусит вас в будущем. Если у вас нет времени на правильное создание тестовых данных, исправьте процесс разработки. Единственная веская причина, по которой я знаю, использовать SeeAllData для тестирования валидации данных. – Acuariano