Closed gummz closed 5 months ago
@gummz you shouldn't override methods in your mock class. Instead use when
to stub the method:
class MockFirebaseAnalytics extends Mock implements FirebaseAnalytics {}
void main() {
group('AnalyticsService Tests', () {
late MockFirebaseAnalytics mockAnalytics;
late AnalyticsService analyticsService;
setUpAll(() {
mockAnalytics = MockFirebaseAnalytics();
GetIt.I.registerSingleton<FirebaseAnalytics>(mockAnalytics);
analyticsService = AnalyticsService();
});
test(
'logEvent should trigger logEventConditional exactly once if enableAnalytics is true',
() async {
final eventName = 'test_event';
final parameters = {'param1': 'value1'};
// Stub the `logEvent` method.
when(() => mockAnalytics.logEvent(name: any(named: 'name'), parameters: any(named: 'parameters')).thenAnswer((_) async {});
// Act
await analyticsService.logEvent(eventName, parameters, true);
// Assert
verify(() => mockAnalytics
.logEvent(name: 'test', parameters: {'test': 'test'})).called(1);
});
}
Hope that helps, closing for now!
Hi, I'm new to mocktail and I was trying to create some tests for my analytics wrapper around FirebaseAnalytics.
I'm getting a "used on a non-mocktail object" error on the call to
verify
. What am I doing wrong?I saw this answer to a previous issue but I don't understand how my usage is different from that.
and the test: