gpt4 book ai didi

testing - Flutter:测试小部件

转载 作者:行者123 更新时间:2023-11-28 20:49:36 25 4
gpt4 key购买 nike

我要测试的是:用户点击一个按钮, snackbar 显示五秒钟。

这是带有键的脚手架:

final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>(debugLabel: "scaffoldState");

...

builder: (context, viewModel) => Scaffold(
key: _scaffoldKey,

然后是按钮和 snackBar 的代码:

child: FlatButton(key: Key('loginButton'), onPressed: () { 
validate();

...

  validate() {
// FormState object can be used to save, reset, and validate
// every FormField that is a descendant of the associated Form.

final FormState form = _formKey.currentState;

if (form.validate()) {
form.save();
form.reset();

//implementation of the snackBar:
_scaffoldKey.currentState.showSnackBar(new SnackBar(
duration: new Duration(seconds: 5)

...

我正在尝试以这种方式测试这种行为(我也在使用 Flutter redux):

void main(){

final store = Store<AppState>(reducer, initialState: AppState.initialState());
testWidgets("MaterialApp local", (WidgetTester tester) async{
await tester.pumpWidget(new StoreProvider(
store: store,
child: MaterialApp(
home: LoginView(),
)));
await tester.pumpAndSettle();
await tester.press(find.byKey(Key("loginButton")));
expect();

我不知道要在 expect 里面放什么。我试图使用 find.ByKey(Key)) 获取 GlobalKey 并搜索 debugLabel,但它似乎不起作用。我已经尝试了 2 天,但找不到出路。

最佳答案

回答这个问题可能有点晚了,但由于这是在 Google 上输入“Flutter test Snackbar”时的第二个结果,所以我只给出我的两分钱:

其实很简单。不要仅仅因为 Snackbar 只在底部停留几秒钟就认为它是完全不同的东西。最后,Snackbar 只是另一个 Widget。

牢记这一点,您可以按如下方式对其进行测试:

testWidgets("MaterialApp local", (WidgetTester tester) async{
...
// Test if the Snackbar appears
expect(find.byType(SnackBar), findsOneWidget);
// Test if it contains your text
expect(find.text('TAPS!'), findsOneWidget);
});

关于testing - Flutter:测试小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52445193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com