从 lib(dev) 代码中初始化的 getIt 获取实例是否可以,或者我应该使用其他方式或其他 DI 设置进行测试?
请参考下面的代码:
void main() {
TravellerProfileViewModel travellerProfileViewModel;
UserService mockUserService;
setUpAll(() {
// CoreInjector is initialised in lib, and gives the getIt instance
CoreInjector.initialize();
//register mockUserService in place of actual user service in the CoreInjector.getIt
mockUserService = registerAndGetMock<UserService>(MockUserService());
// CoreInjector gives TravellerProfileViewModel, injected with UserService
travellerProfileViewModel =
CoreInjector.getIt.get<TravellerProfileViewModel>();
});
}
T registerAndGetMock<T>(T mockAble) {
_removeRegistrationIfExists<T>();
CoreInjector.getIt.registerFactory<T>(() => mockAble);
return mockAble;
}
Run Code Online (Sandbox Code Playgroud)
核心注入器代码
class CoreInjector {
static GetIt _getIt;
static GetIt get getIt => _getIt;
static …
Run Code Online (Sandbox Code Playgroud) unit-testing dependency-injection injectable flutter flutter-test