我想在 Flutter 测试中使用 JSON 文件来模拟 HTTP 响应。在 gitlab CI 上,测试通过了。局部也。但是在 codemagic.io 上有一个错误:
FileSystemException: Cannot open file, path = 'test_resources/mock_response.json' (OS Error: No such file or directory, errno = 2)
我想在 Flutter 测试中使用 JSON 文件来模拟 HTTP 响应。在 gitlab CI 上,测试通过了。局部也。但是在 codemagic.io 上有一个错误:
FileSystemException: Cannot open file, path = 'test_resources/mock_response.json' (OS Error: No such file or directory, errno = 2)
这与`flutter test` 根据测试的执行方式不同地设置当前目录有关。apaatsio 在第一条评论中提供的解决方案对我有用。
所以例如你可以有这样的东西:
import 'dart:io';
import 'package:path/path.dart';
String loadResource(String name) => File("$_testDirectory/test_resources/$name").readAsStringSync();
// From https://github.com/flutter/flutter/issues/20907#issuecomment-466185328
final _testDirectory = join(
Directory.current.path,
Directory.current.path.endsWith('test') ? '' : 'test',
);
然后使用它:
final mockResponse = loadResource('mock_response.json');