我有一个单元测试,其中我的结果和我的预期结果具有值NaN,但当我这样做时

expect(result, expected);

这就是回报

Expected: <NaN>
  Actual: <NaN>

我知道这是因为这个原因Why is NaN not equal to NaN?

但是,为了使这两个值相等,有什么方法可以覆盖相等的比较吗?或者其他解决方案呢?

我知道我可以做result.isNaN,但我用Map做测试,看起来是这样的

{
    'expect': {
        2: 2.0,
        '2.': 2.0,
        '-2.5': -2.5,
        '.5': 0.5,
        '2020-01-06T14:31:00.135Z': double.nan,
        'foo': double.nan,
    }
}

其中,我遍历每个键并将值(Expect)与结果进行比较,因此上面的resultexpected值是动态的,这就是为什么我希望避免只为判断NaN而执行特殊的IF条件

推荐答案

您应该将 map 中的值替换为matcher:

2: equals(2),
'foo': isNaN

然后更新您的逻辑(看起来它将按原样工作).

Flutter相关问答推荐

如何防止alert 对话框在收到通知时出现在某个flutter页面中

无法让Riverpod Stream发出新值

如何在Ffltter Chrome应用程序中使用webview_fltter_web显示自定义html而不是外部uri?

为什么Flutter 翼扩展卡有上下边框?

Android Studio将不会构建iOS模拟器应用程序,因为plist.info有问题

如何在应用程序中使用Fflight显示表情包

Flutter 蜂巢不能正常工作,我正在使用蜂巢在设备上存储数据,但当我关闭并重新启动应用程序时,我失go 了一切

为什么Spotify Auth API返回400,而";code_verier不正确?

Flutter 块消费者仅对特定的状态属性更改做出react

Ffmpeg_kit_fltter:^6.0.3版权问题

将Riverpods NotifierProvider与State类一起使用

将记录/元组用作SplayTreeMap中的键

如何从文本比例因子迁移到文本比例因子

为什么我的图标的一半在定位小部件中消失了?

当键盘隐藏表单时该怎么办?

点击后,将按钮的 colored颜色 禁用/更改一段时间

alert 对话框内的 ListView 显示空的透明窗口

Getx Flutter 在更新值时抛出空错误

如何在 tabBar 中的选项卡之间制作垂直线?

Firebase Firestore 查询