2014-09-14 3 views
3

내가 다른 서버에 POST를 실행하는 방법 테스트 싶습니다다트의 미래를 사용하여 방법을 테스트하는 방법은 무엇입니까?

내가 다루고있어 문제는 내 시험 방법에 의해 반환 된 미래 전에 끝나는 것입니다
Future executePost() { 
    _client.post("http://localhost/path", body : '${data}').then((response) { 
    _logger.info("Response status : ${response.statusCode}"); 
    _logger.info("Response body : ${response.body}"); 

    Completer completer = new Completer(); 
    completer.complete(true); 
    return completer.future; 
    }).catchError((error, stackTrace) { 
    _logger.info(error); 
    _logger.info(stackTrace); 
    }); 
} 

"_client.post는"입니다 실행.

내 시험 방법 : 당신의 도움에 대한

test('should be true',() { 
    try { 
    Future ok = new MyClient().executePost(); 
    expect(ok, completion(equals(true))); 
    } catch(e, s) { 
    _logger.severe(e); 
    _logger.severe(s); 
    } 
}); 

감사합니다!

답변

3

귀하의 executePost() 방법은 심지어는 null를 반환, 미래를 반환하지 않습니다.
client.post()은 미래를 반환하지만이 반환 값은 사용되지 않습니다.

Future executePost() { 
    return _client.post("http://localhost/path", body : '${data}').then((response) { 
    _logger.info("Response status : ${response.statusCode}"); 
    _logger.info("Response body : ${response.body}"); 
    return true; 
    }).catchError((error, stackTrace) { 
    _logger.info(error); 
    _logger.info(stackTrace); 
    }); 
} 
+1

감사 :

는로 변경하는 것을 시도하십시오! 그것은 작동합니다 :) 아직 선물에 익숙하지 않은 : p – matth3o

관련 문제