首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter: Mockito http客户端单元测试异常

Flutter: Mockito http客户端单元测试异常
EN

Stack Overflow用户
提问于 2020-04-22 14:39:34
回答 1查看 405关注 0票数 1

我正在尝试学习mockito http客户端测试。所以这是我的测试:

代码语言:javascript
复制
test(
  'should throw SocketException',
  () async {
    when(mockHttpCLient.get(any, headers: anyNamed('headers')))
        .thenThrow(SocketException);

    expect(
        () => foursquareRepositoryImpl.getVenuesDetails(venueId),
        throwsA(allOf(
            isArgumentError, predicate((e) => e is FetchDataException))));
  },
);

如你所见,当http get方法被调用时,我想抛出SocketException

此实现的方法:

代码语言:javascript
复制
  @override
  Future<VenuesDetails> getVenuesDetails(String venueId) async {
    try {
      var response = await client.get(
          'https://api.foursquare.com/v2/venues/$venueId?client_id={{client_id}}&client_secret={{client_secret}}&v={{v}}',
          headers: {'Content-Type': 'application/json; charset=utf-8'});
    } on SocketException catch (e) {
      throw FetchDataException('No Internet connection');
    } 
    return null;
  }

但是当我运行我的测试时,我得到了这个错误:

代码语言:javascript
复制
Expected: throws (<Instance of 'ArgumentError'> and satisfies function)
  Actual: <Closure: () => Future<VenuesDetails>>
   Which: threw FetchDataException:<Error During Communication: No Internet connection>
          stack package:foursquare_app/repository/foursquare_repository.dart 60:7  FoursquareRepositoryImpl.getVenuesDetails
                test/repository/foursquare_repository_impl_test.dart 157:23        main.<fn>.<fn>.<fn>
                package:test_api                                                   expect
                package:flutter_test/src/widget_tester.dart 234:3                  expect
                test/repository/foursquare_repository_impl_test.dart 156:9         main.<fn>.<fn>
                ===== asynchronous gap ===========================
                package:test_api                                                   expect
                package:flutter_test/src/widget_tester.dart 234:3                  expect
                test/repository/foursquare_repository_impl_test.dart 156:9         main.<fn>.<fn>
                dart:async                                                         _AsyncAwaitCompleter.start
                test/repository/foursquare_repository_impl_test.dart 138:7         main.<fn>.<fn>

package:test_api                                            expect
package:flutter_test/src/widget_tester.dart 234:3           expect
test/repository/foursquare_repository_impl_test.dart 156:9  main.<fn>.<fn>
dart:async                                                  _AsyncAwaitCompleter.start
test/repository/foursquare_repository_impl_test.dart 138:7  main.<fn>.<fn>

我的错误在哪里?

EN

回答 1

Stack Overflow用户

发布于 2021-08-25 18:53:25

只需在下面更改代码,就可以很好地工作。

代码语言:javascript
复制
...

expect(foursquareRepositoryImpl.getVenuesDetails(venueId),
        throwsA(isA<FetchDataException>()));

...

代码语言:javascript
复制
...

try{
     await foursquareRepositoryImpl.getVenuesDetails(venueId);
} catch (e) {
     expect(e, isA<FetchDataException>());
}

...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61358747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档