Несмотря на то, что в Salesforce отсутствие фальшивых фреймворков приводит в бешенство из-за проблем, с которыми приходится сталкиваться при тестировании таких вещей, как контроллеры страниц, важно подумать о том, что вы хотите протестировать здесь.Если предположить, что вы конкретно хотите проверить, что, учитывая, что пользовательский агент возвращает ваш код, возвращает соответствующую строку, то я думаю, что должно сработать что-то вроде следующего:
static String getBrowserName(string userAgentStringToTest)
{
PageReference pageRef = getPageReference(userAgentStringToTest);
String userAgent = getUserAgent(pageRef);
...
}
PageReference getPageReference(string userAgentStringToTest)
{
if(userAgentStringToTest.Length == 0)
{
return ApexPages.currentPage();
}
else
{
PageReference pageRef = new PageReference('someURL');
pageRef.getHeaders().put('User-Agent', userAgentStringToTest);
return pageRef;
}
}
String getUserAgent(PageReference pageRef)
{
pageRef.getHeaders().get('User-Agent');
}
Затем вы бы вызвали метод getBrowserName спустая строка в вашем рабочем коде и строка, которую вы хотите протестировать в своем тестовом коде.
Конечно, есть несколько различных вариантов - вы можете перегружать методы и иметь метод без параметров для основного кодаи параметризованный метод для тестирования.Это не идеально, но я не знаю другого способа сделать это на платформе force.com.
РЕДАКТИРОВАТЬ: Просто для полноты я добавляю примеры тестов, чтобы уточнитьвещи.Мой пример показал, как реорганизовать производственный код, чтобы сделать его тестируемым, но не привел пример того, как написать тест, как запрашивал OP.
Ваши тесты будут выглядеть примерно так:
static testMethod void checkIPhoneBrowser()
{
String actualBrowserName = getBrowserName('string containing iPhone somewhere');
String expectedBrowserName = 'iPhone-Safari';
System.assertEquals(expectedBrowserName , actualBrowserName );
}
static testMethod void checkIEBrowser()
{
String actualBrowserName = getBrowserName('string containing internet explorer somewhere');
String expectedBrowserName = 'ie';
System.assertEquals(expectedBrowserName , actualBrowserName );
}
...