有没有办法让mockito生成mock以在Flutter项目中进行集成测试

Her*_*ohr 11 integration-testing dart flutter mockito-dart

Mockito 为注释中的所有类列表生成模拟@GenerateMocks。它针对文件夹中的测试执行此操作test,但不适用于integration_test文件夹中的测试。我该如何改变这一点?

Her*_*ohr 18

长话短说

将包含以下内容的 build.yaml 文件添加到项目根文件夹中。

targets:
  $default:
    sources:
      - $package$
      - lib/$lib$
      - lib/**.dart
      - test/**.dart
      - integration_test/**.dart
    builders:
      mockito|mockBuilder:
        generate_for:
          - test/**.dart
          - integration_test/**.dart
Run Code Online (Sandbox Code Playgroud)

解释

两者generate_forsources需要告诉mockBuilder应该处理哪些文件。

配置generate_for只是构建器使用的所有文件的子集。但这些文件默认不包含integration_test文件夹。要修改它,我们可以手动列出源文件。我们必须包含默认来源$package$lib/$lib$,否则我们会收到警告。

通过包含任何文件夹 - 在我们的例子中为“integration_test”,它也将可供generate_for.

以下是build_config/README.md的摘录:

  • generate_for:字符串或映射列表,可选:。目标中sources应应用此生成器的文件子集。sources 有关如何配置的信息,请参阅上面的配置。

和:

  • 来源:字符串或映射列表,可选。包内构成此目标的文件集。文件是使用 glob 语法指定的。如果使用字符串列表,则它们被视为“包含”全局对象。如果使用 Map 则只能有键includeexclude。任何与任何 glob 匹配include且不存在 glob 的文件exclude都被视为目标的源。当include省略时,每个文件都被视为匹配。