Flutter 如何从测试中访问颤振环境变量?

Flutter 如何从测试中访问颤振环境变量?,flutter,flutter-test,Flutter,Flutter Test,在整个应用程序中,我一直在使用flatter_dotenv加载保存在.env中的环境变量,到目前为止,它运行良好。但是,当我试图编写测试时,我似乎无法从测试文件访问这些测试 import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { setUp(() async { await DotEnv().load();

在整个应用程序中,我一直在使用flatter_dotenv加载保存在
.env
中的环境变量,到目前为止,它运行良好。但是,当我试图编写测试时,我似乎无法从测试文件访问这些测试

import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  setUp(() async {
    await DotEnv().load();
  });

  test('Incorrect password should be rejected', () {
    var password = DotEnv().env['PASSWORD'];
    // stuff
  });
}
运行测试的结果:

Shell: [flutter_dotenv] Load failed: file not found
Shell: [flutter_dotenv] No env values found. Make sure you have called DotEnv.load()
它似乎找不到
.env
文件。我甚至在test目录中复制了一份
.env
,但它也没有意识到这一点

我尝试使用Platform.environment而不是flatter_dotenv来访问变量,但也没有成功,返回null

抱歉,如果我在这里太傻了,这是我第一次写颤振测试,但我会感谢你的建议

更新:

这就是我的
pubspec.yaml
的样子:

name: //name
description: //description

version: 1.0.0+3

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2
  font_awesome_flutter: ^8.5.0
  flutter_youtube: ^2.0.0
  http: ^0.12.0+4
  flutter_dotenv: ^2.1.0
  google_fonts: ^0.3.7
  photo_view: ^0.9.2
  flutter_page_transition: ^0.1.0

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
  assets:
    - images/
    - .env
name://name
description://description
版本:1.0.0+3
环境:

sdk:“>=2.1.0添加
TestWidgetsFlutterBinding.ensureInitialized();
作为测试主函数的第一行

flatter\u dotenv正在尝试访问与应用程序平台交互的ServicesBindingmixin。您需要先初始化此绑定,然后再访问它,上面的代码行将确保在运行测试之前进行此初始化

您的代码应该如下所示:

import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_test/flutter_test.dart';

void main() async {
  TestWidgetsFlutterBinding.ensureInitialized();
  await DotEnv().load();

  setUp(() {
  // anything else you need to setup
  });

  test('Incorrect password should be rejected', () {
    var password = DotEnv().env['PASSWORD'];
    // stuff
  });
}

你能发布你的
pubspec.yaml
吗?发布页面上说,
.env
文件需要添加为一项资产。很抱歉@MichaelP.回复太慢,没有注意到你的评论。更新了我的问题!