我有一个小型的flutter应用程序,可以在文本小部件中显示传入的共享操作(也就是意图)。接收部分是这样的:
class MyAppState extends State<MyApp> {
@override
void initState() {
ReceiveSharingIntent.getInitialText().then((String value) {
if (value == null) return;
print("got intent " + value);
add_to_widget (value) ;
});
ReceiveSharingIntent.getTextStream().listen((String value) {
print("got intent " + value);
add_to_widget (value) ;
});
}
当我在android虚拟设备上运行代码时,意图被正确收集并且文本显示在小部件中,所以我想我的AndroidManifest.xml正确了:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
但是我想像这样用flutter_test中的小部件测试器自动测试它:
void main() {
testWidgets('receive intent ', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
// the missing bit
await fire_share_action ('hello_intent') ;
expect (find.text('hello_intent'), findsOneWidget) ;
});
}
如您所见,缺少的部分是fire_share_action的内容。我尝试触发https://pub.dev/packages/intent中的意图,但是尽管没有错误也没有异常,但意图的输出并没有像我在avd中运行时那样, expect 也没有通过
我有想念某件事的感觉。测试意图的接受应该是一件基本的事情,对吧?
我很确定将android代码放到 fire_share_action 中(像我一样)是错误的方法,但是-我还能怎么做?如何从“ testWidgets”内部向我的应用发送意图?还是我必须创建一个模拟接收器来进行三明治测试?我不想进入flutter_driver,也不想进入unit_test;小部件测试是我的理想之选,因为它们提供了快速周转和可靠性之间的中间点。
我搞砸了几天的编码,感到非常沮丧。尽管有很多关于在flutter应用程序中发送和接收Intent的文献,但我对 testing 的intent的接收一无所知,更不用说测试 send intent了。
有什么主意吗?