start static method
Future<TestRuntime>
start(
- Module module, {
- ResolverBackend? backend,
- CleanupFailureObserver? cleanupFailureObserver,
- Iterable<
RuntimeObserver> observers = const <RuntimeObserver>[], - RuntimeObserverErrorHandler? observerErrorHandler,
- TestCleanupRegistrar? registerCleanup,
Start a Runtime and automatically attach RecordingRuntimeObserver.
Pass registerCleanup from the test framework boundary to guarantee
teardown without making better_effect depend on package:test:
final harness = await TestRuntime.start(
module,
registerCleanup: (cleanup) => addTearDown(cleanup),
);
Implementation
static Future<TestRuntime> start(
Module module, {
ResolverBackend? backend,
CleanupFailureObserver? cleanupFailureObserver,
Iterable<RuntimeObserver> observers = const <RuntimeObserver>[],
RuntimeObserverErrorHandler? observerErrorHandler,
TestCleanupRegistrar? registerCleanup,
}) async {
final recorder = RecordingRuntimeObserver();
final errors = <RuntimeObserverError>[];
final runtime = await module.start(
backend: backend,
cleanupFailureObserver: cleanupFailureObserver,
observers: <RuntimeObserver>[recorder, ...observers],
observerErrorHandler: (error) {
errors.add(error);
observerErrorHandler?.call(error);
},
);
final harness = TestRuntime._(
runtime: runtime,
observer: recorder,
observerErrors: errors,
);
registerCleanup?.call(() => harness.close());
return harness;
}