mobx store page
import '../../locator.dart';
import '../../shared/model/forum/forum.model.dart';
import '../../storage_manager.dart';
part 'social_store.g.dart';
class SocialStore = _SocialStore with _$SocialStore;
abstract class _SocialStore with Store {
_SocialStore() {}
final SocialProvider _socialProvider = locator.get<SocialProvider>();
@observable
LoadingStatusEnum postDetailPageState = LoadingStatusEnum.init;
@observable
Observable<PostModel>? postItemDetails;
@action
Future<void> getOnePost(
int? postId,
) async {
postDetailPageState = LoadingStatusEnum.loading;
dynamic _resp = await _socialProvider.getOnePostDetail(postId);
if (_resp['success'] != "error") {
PostModel _postItemDetails = PostModel.fromJson(_resp);
postItemDetails = Observable(_postItemDetails);
postDetailPageState = LoadingStatusEnum.success;
} else {
postDetailPageState = LoadingStatusEnum.error;
}
}
}
provider page
class SocialProvider {
Future<dynamic> getOnePostDetail(
int? postId,
) async {
try {
final String url =
"posts/$postId?_fields=id,title,featured_image,categories,link,content";
Response resp = await http!.authService.get(
url,
);
return resp.data;
} on DioException catch (e) {
return {'status': 'error', 'message': http!.parseError(e)};
} catch (e) {
return {
'status': 'error',
'message':
'Something went wrong , Please Check Your Internet Connection'
};
}
}
}
I'm writing unit test for this getOnePost() function using mobx,
test page
import 'package:flutter_test/flutter_test.dart';
import 'package:kdramalive/locator.dart';
import 'package:kdramalive/shared/model/post/post.model.dart';
import 'package:kdramalive/store/social_store/social_store.dart';
import 'package:mockito/mockito.dart';
import 'package:kdramalive/provider/social.provider.dart';
class MockSocialProvider extends Mock implements SocialProvider {}
void main() {
group('getOnePost', () {
test('returns a PostModel when the call is successful', () async {
final mockSocialProvider = MockSocialProvider();
SocialStore _socialStore = locator.get<SocialStore>();
// final postId = 1;
// socialStore.getOnePost(postId);
// final postModel = PostModel();
// when(_socialProvider.getOnePostDetail(postId)).thenAnswer((_) async => {
// 'success': 'ok',
// });
// expect(await socialStore.postItemDetails, equals(postModel));
});
});
}
But when i call this instance SocialStore _socialStore = locator.get<SocialStore>(); getting error
error getting
Bad state: GetIt: Object/factory with type SocialStore is not registered inside GetIt. (Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance; Did you forget to register it?) package:get_it/get_it_impl.dart 12:19 throwIfNot package:get_it/get_it_impl.dart 397:5 _GetItImplementation._findFactoryByNameAndType package:get_it/get_it_impl.dart 425:29 _GetItImplementation.get test\widget_test.dart 60:42 main..
don't know how to call the instance SocialStore _socialStore = locator.get<SocialStore>();