Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests throw an exception #432

Open
2 tasks done
expilu opened this issue Jul 23, 2020 · 8 comments
Open
2 tasks done

Tests throw an exception #432

expilu opened this issue Jul 23, 2020 · 8 comments

Comments

@expilu
Copy link

expilu commented Jul 23, 2020

๐Ÿ› Bug Report

The plugin throws an exception when doing tests with testWidgets. The tests don't fail as the exception is thrown after it completes. But it leaves a lot of console spam like this:

`โ•โ•โ•ก EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following MissingPluginException was thrown running a test (but after the test had completed):
MissingPluginException(No implementation found for method getDatabasesPath on channel
com.tekartik.sqflite)

When the exception was thrown, this was the stack:
#0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:154:7)

#1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
#2 invokeMethod (package:sqflite/src/sqflite_impl.dart:17:13)
#3 SqfliteDatabaseFactoryImpl.invokeMethod (package:sqflite/src/factory_impl.dart:82:7)
#4 SqfliteDatabaseFactoryMixin.safeInvokeMethod. (package:sqflite_common/src/factory_mixin.dart:25:35)
#5 wrapDatabaseException (package:sqflite/src/exception_impl.dart:7:32)
#6 SqfliteDatabaseFactoryImpl.wrapDatabaseException (package:sqflite/src/factory_impl.dart:78:7)
#7 SqfliteDatabaseFactoryMixin.safeInvokeMethod (package:sqflite_common/src/factory_mixin.dart:25:7)
#8 SqfliteDatabaseFactoryMixin.getDatabasesPath (package:sqflite_common/src/factory_mixin.dart:143:26)
#9 getDatabasesPath (package:sqflite/sqflite.dart:168:54)
#10 CacheStore._getObjectProvider (package:flutter_cache_manager/src/cache_store.dart:43:33)
#11 new CacheStore (package:flutter_cache_manager/src/cache_store.dart:39:49)
#12 BaseCacheManager.createCacheStore (package:flutter_cache_manager/src/cache_manager.dart:263:12)
#13 new BaseCacheManager (package:flutter_cache_manager/src/cache_manager.dart:84:28)
#14 new DefaultCacheManager.
(package:flutter_cache_manager/src/cache_manager.dart:40:29)
#15 new DefaultCacheManager (package:flutter_cache_manager/src/cache_manager.dart:36:39)
#16 CachedNetworkImageState._cacheManager (package:cached_network_image/src/cached_image_widget.dart:404:35)
#17 CachedNetworkImageState._createFileStream (package:cached_network_image/src/cached_image_widget.dart:242:19)
#18 CachedNetworkImageState.initState (package:cached_network_image/src/cached_image_widget.dart:219:5)
#19 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4640:58)
#20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
... Normal element mounting (39 frames)
#59 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
#60 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5947:32)
... Normal element mounting (36 frames)
#96 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
#97 Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
#98 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1162:36)
#99 SliverMultiBoxAdaptorElement.createChild. (package:flutter/src/widgets/sliver.dart:1147:20)
#100 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2607:19)
#101 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1140:11)
#102 RenderSliverMultiBoxAdaptor._createOrObtainChild. (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:354:23)
#103 RenderObject.invokeLayoutCallback. (package:flutter/src/rendering/object.dart:1866:58)
#104 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:918:15)
#105 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1866:13)
#106 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:343:5)
#107 RenderSliverMultiBoxAdaptor.addInitialChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:427:5)
#108 RenderSliverFixedExtentBoxAdaptor.performLayout (package:flutter/src/rendering/sliver_fixed_extent_list.dart:197:12)
#109 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#110 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:135:11)
#111 _RenderSliverFractionalPadding.performLayout (package:flutter/src/widgets/sliver_fill.dart:168:11)
#112 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#113 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:452:13)
#114 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1444:12)
#115 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1353:20)
#116 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#117 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#118 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#119 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#120 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#121 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#122 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#123 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#124 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#125 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#126 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#127 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#128 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#129 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#130 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#131 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#132 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#133 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#134 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#135 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:556:15)
#136 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#137 RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:266:13)
#138 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#139 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:746:15)
#140 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#141 _RenderSingleChildViewport.performLayout (package:flutter/src/widgets/single_child_scroll_view.dart:512:13)
#142 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#143 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#144 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#145 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#146 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#147 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#148 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#149 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#150 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#151 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#152 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#153 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#154 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#155 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#156 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#157 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#158 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#159 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#160 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#161 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:11)
#162 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:484:7)
#163 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
#164 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:399:14)
#165 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#166 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#167 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#168 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#169 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1248:11)
#170 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#171 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#172 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#173 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#174 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1630:7)
#175 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:887:18)
#176 AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1009:23)
#177 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5)
#178 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1113:15)
#179 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1052:9)
#180 AutomatedTestWidgetsFlutterBinding.pump. (package:flutter_test/src/binding.dart:879:9)
#183 TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:72:41)
#184 AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:866:27)
#185 WidgetTester.pumpAndSettle. (package:flutter_test/src/widget_tester.dart:542:23)
#186 WidgetTester.pumpAndSettle. (package:flutter_test/src/widget_tester.dart:537:39)
#189 TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:72:41)
#190 WidgetTester.pumpAndSettle (package:flutter_test/src/widget_tester.dart:537:27)
#191 main.... (file:///C:/code/baltics-flutter/test/product_screen_test.dart:46:24)
(elided 16 frames from dart:async and package:stack_trace)`

Expected behavior

To not throw an exception when used on tests.

Reproduction steps

Just add a CachedNetworkImage to a widget and write a test for it with testWidgets.

Configuration

Platform:

  • ๐Ÿ“ฑ iOS
  • ๐Ÿค– Android
@ncuillery
Copy link

In my case, the test fails.

Maybe because I'm doing golden testing.

await expectLater(
  find.byType(MyWidgetUsingCachedNetWorkImage),
  matchesGoldenFile('main.png'),
);

@kjuchnowicz
Copy link

I have exact same problem with widget tests while using CachedNetworkImage widget.

@zb666
Copy link

zb666 commented Aug 19, 2020

+1

@ncuillery
Copy link

This blog post might help: https://medium.com/flutter-community/golden-testing-using-cachednetworkimage-1b488c653af3

@hampsterx
Copy link

hampsterx commented Sep 10, 2020

followed that blog post but still getting issue, seems base class is trying to create http client.

  Tried calling: printOnFailure("Warning: At least one test in this suite creates an HttpClient. When\nrunning a test suite that uses TestWidgetsFlutterBinding, all HTTP\nrequests will return status code 400, and no network request will\nactually be made. Any test expecting a real network connection and\nstatus code will fail.\nTo test code that needs an HttpClient, provide your own HttpClient\nimplementation to the code under test, so that your test can\nconsistently provide a testable response to the code under test.")
  package:test_api                                                            printOnFailure
  package:flutter_test/src/_binding_io.dart 83:7                              _MockHttpOverrides.createHttpClient
  dart:_http                                                                  new HttpClient
  package:http/src/io_client.dart 23:52                                       new IOClient
  package:http/src/io_client.dart 16:30                                       createClient
  package:http/src/client.dart 35:23                                          new Client
  package:flutter_cache_manager/src/web/file_service.dart 24:38               new HttpFileService
  package:flutter_cache_manager/src/web/web_helper.dart 24:39                 new WebHelper
  package:flutter_cache_manager/src/cache_manager.dart 91:31                  new BaseCacheManager
  custom_cache_manager.dart 9:9                                               new TestCacheManager

hmm seems to work if add the GetIt call inside a setUpAll method in the test. Still having test hang however but suspect that is probably due to using it with golden_toolkit.

@uzumaki258
Copy link

I have exact same problem with widget tests while using CachedNetworkImage widget.

me too.

@naresh2052
Copy link

naresh2052 commented Jul 13, 2022

Because cached_network_image >=3.2.0 depends on flutter_cache_manager ^3.3.0 which depends on sqflite ^2.0.0+3, cached_network_image >=3.2.0 requires sqflite from hosted.
So, because app depends on both cached_network_image ^3.2.1 and sqflite from git, version solving failed.

i faced this error plz any one help me

@zb666
Copy link

zb666 commented Jul 13, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants