Ada*_*ths 7 unit-testing environment-variables dart flutter
在我的生产代码中,我使用该标志设置环境变量--DART-DEFINE,然后使用 检索它们String.fromEnvironment。
如何覆盖String.fromEnvironment单元测试中返回的值,以测试我的生产代码如何响应不同的环境变量值?
将环境变量包装在类中,并使用您首选的依赖项注入或服务定位器包(例如get_it)从应用程序内访问注入的类。
你的environment_config.dart:
class EnvironmentConfig {
final String someValue;
EnvironmentConfig({
required this.someValue,
});
factory EnvironmentConfig.init() {
const someValue = String.fromEnvironment('someEnvVar');
return EnvironmentConfig(someValue: someValue);
}
}
Run Code Online (Sandbox Code Playgroud)
main.dart
void main() {
// instance can now be accessed from any class/widget within your app
GetIt.I.registerSingleton<EnvironmentConfig>(EnvironmentConfig.init());
runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)
然后在单元测试中,您可以EnvironmentConfig使用自己的值注入自己的实例:
void main() {
setUp(() {
final config = EnvironmentConfig(someValue: 'myCustomValue');
GetIt.I.registerSingleton<EnvironmentConfig>(config);
});
tearDown(() {
GetIt.I.reset();
});
test('Verify env vars', () {
expect(GetIt.I<EnvironmentConfig>().someValue, equals('myCustomValue');
});
}
Run Code Online (Sandbox Code Playgroud)
编辑:考虑到这是现在搜索答案时的最佳结果,值得注意的是,上述方法的权衡是它不适合树摇动,因为该类不是EnvironmentConfig编译时的使用工厂构造函数时为常量。
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |