【发布时间】:2019-08-20 07:25:01
【问题描述】:
我正在编写一个带有模拟客户端的 Flutter 集成测试,该客户端为我的应用调用的每个 REST 端点返回 JSON 响应。 这些 JSON 响应存储在单独的 JSON 文件中,但在测试运行时我无法访问这些文件。
我尝试通过创建和读取新文件对象来加载文件。 Flutter: how to load file for testing 但它永远找不到文件。 我还尝试将我的 JSON 文件放入资产中。这很有效,但也导致我在构建 APK 时捆绑了测试 JSON 文件。
简化的模拟客户端:
MockClient integrationMockClient = MockClient((request) async {
switch (request.url.toString()) {
case 'https://staging.company.com/api/123':
return Response(readJsonfile('myJsonFile.json'), 200);
简化集成测试主要功能 - 传入模拟客户端。test_driver/app.dart
void main() async {
enableFlutterDriverExtension();
final app = await initializeApp(
integrationMockClient
);
runApp(app);
}
当我尝试读取文件时,它永远找不到它。可能是因为 flutterDriver 运行“真实应用程序”而无法访问存储在测试目录中的文件。
如何从集成测试访问 JSON 文件而不将其捆绑在生产代码/APK 中?
【问题讨论】:
-
找到解决办法了吗?
-
遗憾的是没有。我通过将 JSON 存储在飞镖字符串
const String successJson = '{"value": 5, "Name": "test"}'中实现了一个狡猾的解决方法 -
哈哈,研究失败后我也做了同样的事情:D
-
在过去 4 个月中是否有任何解决方法,我真的在我正在加载的 JSON 上......?
-
stackoverflow.com/questions/45780255/… 接受的答案在其下方有一个额外的相关答案 stackoverflow.com/a/57086750/6668797,它可能解决“但它永远找不到文件”,除非您更具体到您的问题。
标签: flutter flutter-test