I'm trying to create a test case for getting list stores data and I currently fail to implement some working tests but I got some problems when trying to compare the data list.
This is my test's code:
blocTest(
"_getListStore - successCase",
setUp: () {
final body = jsonEncode('');
final params = '?indexPage=$page&limit=10';
when(repoMock.getAllListStore(mallId, body, params, wlServiceMock))
.thenAnswer((_) => Future.value(data));
_data.clear();
_tempData.clear();
listDatas.clear();
var reqData = data.content.stores;
_tempData.addAll(reqData);
List<ContentListStore> temp = [];
for (var i = 0; i < reqData.length; i++) {
temp.add(reqData[i]);
if (temp.length == 1 || i == reqData.length - 1) {
_data.add(DataStoreList(content: temp));
temp = [];
}
}
listDatas.addAll(_data);
},
build: () => listStoreBloc,
act: (bloc) => bloc.add(GetListStore(
mallId: mallId,
page: page,
isScroll: true,
isPullToRefresh: true,
)),
expect: () => [
isA<ListStorePageState>()
.having((w) => w.currentPage, 'currentPage', 0)
.having((w) => w.submitStatus, 'submitStatus',
FormzStatus.submissionInProgress)
.having((w) => w.message, 'message', StatusStateList.getListData)
.having((w) => w.isLoading, 'isLoading', true),
isA<ListStorePageState>()
.having((w) => w.currentPage, 'currentPage', 0)
.having((w) => w.submitStatus, 'submitStatus',
FormzStatus.submissionSuccess)
.having((w) => w.isLoading, 'isLoading', false)
.having((w) => w.isScroll, 'isScroll', true)
.having((w) => w.isPullToRefresh, 'isPullToRefresh', true)
.having((w) => w.filter, 'filter', null)
.having((w) => w.contentData, 'contentData', listDatas),
],
);
this error from debug console:
Expected: [
<<Instance of 'ListStorePageState'> with `currentPage`: <0> and `submitStatus`: FormzStatus:<FormzStatus.submissionInProgress> and `message`: StatusStateList:<StatusStateList.getListData> and `isLoading`: <true>>,
<<Instance of 'ListStorePageState'> with `currentPage`: <0> and `submitStatus`: FormzStatus:<FormzStatus.submissionSuccess> and `isLoading`: <false> and `isScroll`: <true> and `isPullToRefresh`: <true> and `filter`: <null> and `contentData`: [Instance of 'DataStoreList']>
]
Actual: [Instance of 'ListStorePageState', Instance of 'ListStorePageState']
Which: at location [1] is <Instance of 'ListStorePageState'> which has `contentData` with value [Instance of 'DataStoreList'] which at location [0] is <Instance of 'DataStoreList'> instead of <Instance of 'DataStoreList'>
==== diff ========================================
[Instance of '[-HavingMatcher<-]ListStorePageState[->-]', Instance of '[-HavingMatcher<-]ListStorePageState[->-]']
==== end diff ====================================
I tried to print the data in setUp and my bloc, this everything is the same. any suggestion to compare these list data?
You can override the Class toString() function, you might print the values:
output:
witouth @override toString() the output is: