【问题标题】:The name 'string' isn't a type and can't be used in an 'is' expression名称 'string' 不是类型,不能在 'is' 表达式中使用
【发布时间】:2020-09-26 19:15:31
【问题描述】:

在对返回不同类型对象的函数进行单元测试时,我需要检查返回对象的类型是否与预期的相同。因此,我需要在一个变量中传递多个类。然后我需要将此变量与is 运算符一起使用来检查类型。

final string = String;
assert('foo' is string);

但我得到了

error: The name 'string' isn't a type and can't be used in an 'is' expression. 

我在某处读到一个名为 Dart:mirrors 的库可以解决这个问题,但我还没有看到一个实际的例子。

【问题讨论】:

标签: flutter dart


【解决方案1】:

在单元测试中,您知道预期的答案。不需要使您的类型变量。 相反,只需使用强类型断言

assert('foo' is String);

【讨论】:

  • > 在单元测试中,您知道预期的答案。如果我想创建可重用的方法来检查类型怎么办?说我不应该让我的类型成为变量是很轻率的。
【解决方案2】:

我找到了答案。创建我要断言的类型的实例的技巧,然后使用runtimeType 属性。

如果一个类在 a.dart 中被称为 User,而另一个类在 b.dart 中也被称为 User,则 runtimeType 将不一样

final string = 'anything'.runtimeType;
assert('foo'.runtimeType is string);

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 2020-06-22
    • 2020-07-31
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多