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);
  }
});

ご協力いただきありがとうございます !

4

1 に答える 1

3

あなたのexecutePost()メソッドは未来さえ返さず、返しますnull
client.post()future を返しますが、この戻り値は使用されません。

次のように変更してみてください。

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);
  });
}
于 2014-09-14T16:36:59.513 に答える