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

标签 dart flutter

使用 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

关于dart - Flutter 中的 jest 快照测试相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53320859/

相关文章:

java - flutter 安卓错误: How to extends MainActivity from "Two Packages"

firebase - Flutter Cloud Firestore在调试时仅获取最新数据

Flutter StreamBuilder 加载时移除旧数据

flutter - 在 flutter 行/列中独立对齐元素

java - 未处理的异常 : NoSuchMethodError: The method 'insertData' was called on null

flutter : Dependencies vs dev_dependencies

flutter - 如何在 SearchDelegate 中自定义应用栏样式

flutter - 如何从实例内部引用类的实例

android - 如何在Flutter上禁用或处理最小化应用程序功能

flutter - 无法从 Flutter 中的 TextField 和 TextFormField 中删除底部填充