I am trying to learn testing with bloc. Followed the procedure as stated in docs.
I have lib/cubit/counter_cubit.dart and lib/cubit/counterState.dart files
counter_cubit.dart is:
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
part 'counter_state.dart';
class CounterCubit extends Cubit<CounterState> {
CounterCubit() : super(CounterState(counterValue: 0, wasIncremented: false));
void increment() => emit(
CounterState(counterValue: state.counterValue + 1, wasIncremented: true));
void decrement() => emit(CounterState(
counterValue: state.counterValue - 1, wasIncremented: false));
}
counter_state.dart is:
part of 'counter_cubit.dart';
class CounterState extends Equatable {
int counterValue;
bool wasIncremented;
CounterState({
required this.counterValue,
required this.wasIncremented,
});
@override
List<Object?> get props => [counterValue, wasIncremented];
}
and the counter_cubit_test.dart is:
import 'package:bloc_basics/cubit/counter_cubit.dart';
import 'package:bloc_test/bloc_test.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group("CounterCubit", () {
final CounterCubit counterCubit = CounterCubit();
test(
"the initial state for the CounterCubitis CounterState(counterValue:0, wasIncremented:false)",
() {
expect(counterCubit.state,
CounterState(counterValue: 0, wasIncremented: false));
});
blocTest(
"The cubit should emit a CounterState(countervalue:1, wasIncremented:true) when cubit.increment() is called.",
build: () => counterCubit,
act: (cubit) => cubit!.increment(),
expect: () => CounterState(counterValue: 1, wasIncremented: true));
});
}
That line act: (cubit) => cubit!.increment() in counter_cubit_test.dart is throwing The method 'increment' isn't defined for the type 'Object'. Error.
Couldn't figure out.
The
method 'X' isn't defined for the type 'Object'.error is usually thrown when the type of a specific object is not clear, hence it falls back to the general typeObject.Based on the docs you provided, you should define the Cubit class type and it's state type inside
blocTestmethod: