Dart Aqueduct Rest API 单元测试:空安全错误

时间:2021-03-15 22:19:08

标签: rest dart aqueduct

我使用 aqueduct 和 dart 创建了一个简单的 REST Api,我正在尝试运行单元测试。但是,尝试这样做时出现以下错误:

Failed to load "test\example_test.dart":
  Unable to spawn isolate: Error: Cannot run with sound null safety, because the following dependencies
  don't support null safety:

   - package:test_core
   - package:test_api
   - package:aqueduct_test
   - package:test
   - package:aqueduct
   - package:boolean_selector
   - package:logging
   - package:safe_config
   - package:matcher
   - package:crypto
   - package:password_hash
   - package:open_api
   - package:yaml
   - package:postgres
   - package:convert
   - package:codable
   - package:pub_semver

我的代码如下:

channel.dart

Controller get entryPoint {
    final router = Router();

    // Prefer to use `link` instead of `linkFunction`.
    // See: https://aqueduct.io/docs/http/request_controller/
    router.route("/example").linkFunction((request) async {
      return Response.ok({"key": "value"});
    });

example_test.dart

import 'harness/app.dart';

Future main() async {
  final harness = Harness()..install();

  test("GET /example returns 200 {'key': 'value'}", () async {
    expectResponse(await harness.agent.get("/example"), 200, body: {"key": "value"});
  });
}

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

好像你的 Dart 版本是 >2.12

Aqueduct 不支持空安全。所以基本上你不能照原样去做。您需要安装低于 2.12 的 dart 版本。我建议使用 2.7.2,因为 2.8 及更高版本有一些重大更改,这些更改在 Aqueduct 中造成了混乱。

更好的解决方案是在 docker 容器中安装 dart 2.7.2 并使用 VS 代码进行开发。

另外最好注意的是,Stabelkernel discontinued 开发了 Aqueduct,它不会得到支持。

社区正在努力将渡槽分叉并将其重新命名为 Conduit。希望 Conduit 的空安全初始版本即将发布。所以也要注意这一点。