dart - Flutter 中的 jest 快照测试相当于什么?

使用 Jest,一个 JS 测试库,可以有一个“快照”,如下所示:

test('foo', () => {
    expect(42).toMatchSnapshot("my_snapshot");
})

基本上,在第一次运行时,这会将测试值保存到文件中。在以后的运行中,它会将传递的值与文件中的值进行比较。因此,如果传递的值与该文件中的值不同,则测试失败。

这非常有用,因为它可以轻松创建测试。

有没有办法使用 Flutter 提供的测试框架来做到这一点?

最佳答案

只有小部件才有可能,使用 testWidgets:

testWidgets('golden', (tester) async {
  await tester.pumpWidget(Container(
    color: Colors.red,
  ));

  await expectLater(
      find.byType(Container), matchesGoldenFile("red_container.png"));
});

首先,您必须泵送您要测试的小部件(此处为红色容器)。

然后你可以使用 matchesGoldenFile 结合 expectLater。这将截取小部件的屏幕截图并将其与之前保存的截图进行比较。

在第一次运行或想要更新黄金时,你必须将一个标志传递给 flutter test:

flutter test --update-goldens

https://stackoverflow.com/questions/53320859/

相关文章:

dart - Flutter 如何将 String 转换为 List

flutter - 带有动画提示/标签的文本字段

flutter - CupertinoPageScaffold 的子小部件位于 CupertinoN

android - Flutter:图像溢出容器

dart - 将 ListTile 图标左对齐

android-studio - Flutter 如何在 Android Studio 中制作发布版

dart - Flutter 突然无法将 apk 安装到真机

dart - 如何使用 android_intent 通过 flutter 打开位置设置

flutter - 如何在 flutter 中向列添加滚动

dart - 在 Dart 的 Cloud Firestore 中添加文档后如何获取文档 ID