While calling a function from unit test in Flutter (Dart), how can I find if I am running unit test or real application? I want to pass different data if it's in unit test.
You can use the following to check if you're running a test.
Platform.environment.containsKey('FLUTTER_TEST')
Solution for web below
Note that the code above doesn't work on web as the Platform
class is part of dart:io
which is not available on web. An alternative solution that works for all platforms including web would be to use --dart-define
build environment variable. It is available from Flutter 1.17
Example of running tests with --dart-define
:
flutter drive --dart-define=testing_mode=true --target=test_driver/main.dart
In code you can check this environment variable with the following code:
const bool.fromEnvironment('testing_mode', defaultValue: false)
Not using const can lead to the variable not being read on mobile, see here.
Platform
is defined in dart:io
–
Teahan dart:io
isn't available). Anyone know how to accomplish this in Flutter web? –
Winniewinnifred if (kIsWeb == false && Platform.environment.containsKey('FLUTTER_TEST'))
and cover flutter web
. –
Eparch The accepted answer is right but if you want to check for a testing environment without breaking your web code, you can use the universal_io package.
Platform.environment.containsKey('FLUTTER_TEST')
On the web, Platform.environment will return an empty map instead of crashing your app.
Mobile only:
import 'dart:io';
Web & Mobile:
import 'package:universal_io/io.dart';
Then in your function:
if(Platform.environment.containsKey('FLUTTER_TEST')) {
//add your code here
}
Using the instance of Platform
from dart:io
will crash on web when you are not in test mode, so make sure to always use the universal_io/io
's instance.
I tested it with universal_io: ^2.2.2
which is working perfectly on all platforms. It seems it wasn't working on older versions as @12806961 stated in his answer.
If you want to use dart:io
for mobile and universal_io: ^2.2.2
for web, you can always have conditional import/export of a variable that you would create globally for the project.
© 2022 - 2024 — McMap. All rights reserved.