小编ali*_*hur的帖子

如何最好地在 Flutter 集成测试中存根/模拟其余 API 调用

我有一个 Flutter 应用程序,在用户登录后显示数据。我有单元和小部件测试,现在想编写我的第一个集成/端到端测试来测试用户登录的整个“快乐路径”工作流并查看数据。

当应用程序调用登录 API (GET login_api_path) 时,我想返回一些预定义的 JSON 以显示在屏幕上的内容,而不是向服务器发出真正的请求。

这是一个明智的方法,如果是这样,最好的方法是什么?我发现的大多数资源都是专门用于单元测试的。

dart flutter flutter-test

8
推荐指数
1
解决办法
5230
查看次数

Flutter 集成测试 - 如何加载 JSON 文件?

我正在使用模拟客户端编写 Flutter 集成测试,该客户端为我的应用程序调用的每个 REST 端点返回一个 JSON 响应。这些 JSON 响应存储在单独的 JSON 文件中,但在测试运行时我无法访问这些文件。

我尝试通过创建和读取新文件对象来加载文件。Flutter:如何加载文件进行测试,但始终找不到该文件。我还尝试将我的 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);
Run Code Online (Sandbox Code Playgroud)

简化的集成测试主要功能 - 传入模拟客户端。 test_driver/app.dart

void main() async {
  enableFlutterDriverExtension();
  final app = await initializeApp(
    integrationMockClient
  );
  runApp(app);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试读取文件时,它永远找不到它。可能是因为 flutterDriver 运行“真正的应用程序”而无法访问存储在测试目录中的文件。

如何从集成测试访问 JSON 文件而不将其捆绑在生产代码/APK 中?

flutter flutter-test

6
推荐指数
1
解决办法
1341
查看次数

如何在 Dart 中使用不区分大小写的正则表达式内部的变量

我想知道一个文本字符串中有多少个特定单词的匹配项。我希望将我正在搜索的单词作为变量而不是字符串提供。搜索应该不区分大小写。

我可以让它与变量一起工作:

String text = "here is some text and SOME more words";
String word = "some";

RegExp pattern = RegExp(word);
Iterable matches = pattern.allMatches(text);
print(matches.length);  // prints 1 but want 2.
Run Code Online (Sandbox Code Playgroud)

但我不确定如何添加不区分大小写。JavaScript 风格/iRegExp(word, "i")不起作用。

Dart 文档显示有一个名为 的属性,isCaseSensitive但它显示为read-only. https://api.dartlang.org/stable/2.7.0/dart-core/RegExp-class.html

regex dart

5
推荐指数
1
解决办法
3468
查看次数

如何从使用 CustomPainter 绘制的画布中获取图像?

在我的 Flutter 应用程序中,我使用CustomPainter来允许用户在屏幕上绘制他们的签名。我需要找到一种方法将其保存为图像。

当您能够PictureRecorder按照之前的 StackOverflow 回答将对象传递到画布时,PictureRecorder工作得很好:

final recorder = new PictureRecorder();
Canvas(recorder).drawSomething;
final picture = recorder.endRecording();
Run Code Online (Sandbox Code Playgroud)

但是,当使用CustomPainter画布时是Paint()函数的参数。

class myPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    drawToCanvas(canvas);

  @override
  bool shouldRepaint(CustomPainter old) {
    return false; 
}
Run Code Online (Sandbox Code Playgroud)

所以总结一下:

如何从 CustomPainter 生成图像?
如果答案是使用 PictureRecorder,我如何将记录器传递给画布?

canvas image custom-painting dart flutter

4
推荐指数
1
解决办法
1220
查看次数

如何在 aws 放大中使用 graphQL 限制

我是使用 aws-amplify 的新手,并且有一个与此类似的函数,它会调用一个查询listItems并返回isEnbledtrue(来自 DynamoDB)的项目。我希望这个过滤整个表,这可能是巨大的。因此,我无法简单地设置一个像 1000 这样的限制并保留它。有没有办法指定无限查询并扫描表中的所有内容?或者我应该使用其他属性吗?

 import { API } from 'aws-amplify'

 export async function getAllEnabledListItems() {
      const { data } = await API.graphql({
      query: queries.listItems,
      variables: { filter: { isEnabled: { eq: true } }, limit: 10000 },
      authMode: 'AMAZON_COGNITO_USER_POOLS' 
    })
 return data
 }
Run Code Online (Sandbox Code Playgroud)

javascript amazon-dynamodb graphql aws-amplify

3
推荐指数
1
解决办法
2307
查看次数