我正在try 在Ffltter中创建一个简单的小部件测试.我有一个自定义小部件,它接收一些值,组成一个字符串,并显示包含该字符串的文本.我必须创建小部件,并且它可以工作,但是我在读取文本组件的值以断言生成的文本是正确的时遇到了问题.
我创建了一个简单的测试来说明这个问题.我想得到文本值,也就是"text".我try 了几种方法,如果得到取景器ASSTRing(),我可以解释字符串来获得值,但我不认为这是一个好的解决方案.我想以文本的形式读取组件,以便访问所有属性.
那么,如何读取文本小部件以便访问数据属性呢?
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('my first widget test', (WidgetTester tester) async {
await tester
.pumpWidget(MaterialApp(home: Text("text", key: Key('unit_text'))));
// This works and prints: (Text-[<'unit_text'>]("text"))
var finder = find.byKey(Key("unit_text"));
print(finder.evaluate().first);
// This also works and prints: (Text-[<'unit_text'>]("text"))
var finderByType = find.byType(Text);
print(finderByType.evaluate().first);
// This returns empty
print(finder.first.evaluate().whereType<Text>());
// This throws: type 'StatelessElement' is not a subtype of type 'Text' in type cast
print(finder.first.evaluate().cast<Text>().first);
});
}