2013-02-12 5 views
2

Я разработал функциональность, которая использует класс HttpRequest. Чтобы проверить это, я использовал HttpCalloutMock. Эта функциональность находится в пределах метода @future (callout=true). Я разработал тестовые классы по документации для HttpCalloutMock. Тесты (2) проходят в песочнице, но при развертывании на производство они оба дают ошибку System.NullPointerException (видимо, HttpResponse равно null) в строке утверждения. Вот код для тестов и реализаций HttpCalloutMock в пределах того же класса Test:Исключение при развертывании HttpCalloutMock

@isTest 
global class TrustCalloutTest { 

    global class TrustCalloutMockBasicCallout implements HttpCalloutMock { 

     global HTTPResponse respond(HTTPRequest req) { 

      HttpResponse res = new HttpResponse(); 
      res.setBody('TEST'); 
      res.setStatusCode(200); 
      return res; 
     } 
    } 

    global class TrustCalloutMockRequestKey implements HttpCalloutMock { 

     global HTTPResponse respond(HTTPRequest req) { 

      HttpResponse res = new HttpResponse(); 
      res.setBody('RECEIVED'); 
      res.setStatusCode(200); 
      return res; 
     } 
    } 

    static testmethod void testCalloutRequireKey() { 

     HttpResponse res; 
     Test.setMock(HttpCalloutMock.class, new TrustCalloutMockRequestKey()); 
     res = TrustCallout.requestTransferKey('BLAH','https://beta2.trustpoint.fi/API/requirekey.php'); 
     System.assertEquals(200, res.getStatusCode()); 
    } 
    static testmethod void testCalloutBasicCallout(){ 

     HttpResponse res; 
     Test.setMock(HttpCalloutMock.class, new TrustCalloutMockBasicCallout()); 
     res = TrustCallout.basicCallout('BLAH','https://beta2.trustpoint.fi/API/committransfer.php'); 
     System.assertEquals(200, res.getStatusCode());  
    } 
} 

Действительная выноска работает нормально, и это также следует документации. Можете ли вы заметить что-то не так?

Спасибо.

MGA.

ответ

1

Выглядит очень странно и указывает на то, что отличается от вашей песочницы и производственной среды.

Возможно ли, что ваш метод TrustCallout.requestTransferKey() на самом деле не звонит Http.send() по какой-то причине и возвращается Null?

Вы просматривали журнал отладки из тестового прогона, чтобы следовать пути выполнения? Можете ли вы добавить System.debug() звонки на номер requestTransferKey() и подтвердить, что он по-прежнему звонит Http.send()? И что ваш код в TrustCalloutMockRequestKey.respond() на самом деле работает?

+0

Вы когда-нибудь находили решение этого вопроса? –

Смежные вопросы