如何在小部件测试中包含提供者?

use*_*603 3 flutter flutter-test

我有一个依赖于提供者的小部件。我想在这个小部件上运行小部件测试。我假设因为小部件测试直接在树中的该节点上进行,所以出现以下错误是合理的:

  * Ensure the Provider<Appointments> is an ancestor to this InstallMonitorPage Widget
Run Code Online (Sandbox Code Playgroud)

(注意:我的提供者的名字是 。可能主要包括:

 return MultiProvider(
      providers: [
        Provider<AuthBase>(
          builder: (context) => Auth(),
        ),
        Provider<Appointments>(
          builder: (context) => Appointments(),
        )
      ],
      child: MaterialApp(
          title: title,
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: LaunchPage()),
    );
Run Code Online (Sandbox Code Playgroud)

在小部件树下方的小部件上运行小部件测试时,是否有包含提供程序的语法/方法?

die*_*per 5

你可以尝试这样的事情:

    await tester.pumpWidget(MultiProvider(
         providers: [
        Provider<AuthBase>(
          builder: (context) => Auth(),
        ),
        Provider<Appointments>(
          builder: (context) => Appointments(),
         )
       ],
      child: Builder(
        builder: (_) => YourWidgeToTest(),
      ),
    ),);
Run Code Online (Sandbox Code Playgroud)