我是dart的新手,正在尝试测试。我的第一个程序是一个接受用户输入的命令行工具。在测试过程中,我如何模拟它?我的函数允许用户从列表中选择一个项目。如果函数成功地拒绝了通过“readLineSync”输入的太小或太大的整数,我想写测试。如何在测试中创建输入?(使用test.dart)
uxhixvfz1#
如果你使用stdin来收集输入,你可以使用IOOverrides来覆盖stdin的行为。我使用的例子需要你安装mocktail作为一个开发依赖。给定函数:
stdin
IOOverrides
mocktail
String? collect() => stdin.readLineSync();
我想在测试过程中提供我自己的输入:
import 'dart:io' hide stdin; import 'package:example/example.dart' show collect; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; class FakeStdin extends Mock implements Stdin {} void main() { test('collect returns input', () { final stdin = FakeStdin(); when(() => stdin.readLineSync()).thenReturn('input!'); IOOverrides.runZoned( () { expect(collect(), equals('input!')); // passes! }, stdin: () => stdin, ); }); }
1条答案
按热度按时间uxhixvfz1#
如果你使用
stdin
来收集输入,你可以使用IOOverrides
来覆盖stdin
的行为。我使用的例子需要你安装mocktail
作为一个开发依赖。给定函数:我想在测试过程中提供我自己的输入: