提问人:Nithyashree B L 提问时间:11/17/2023 更新时间:11/17/2023 访问量:25
如何在颤动中覆盖 mockito 中的特定行?
How to cover a specific line in mockito in flutter?
问:
String get manageCaregiverLabel => isCaregiverAssignedToPatient ||
caregiverStatus != null && caregiverStatus!.contains('Pending')
? 'Caregiver: ${_nameShortenerService.abbreviateLastName(
_caregiverService.caregiverInvitation?.name ?? '',
)}'
: _localizer.myAccountLandingScreen_inviteCaregiver;
test(
'manageCaregiverLabel returns correct value when caregiver is assigned',
() {
when(
mockUserService.relatedUserSummary,
).thenReturn(caregiverMockSummary);
when(mockCaregiverService.caregiverInvitation?.name).thenReturn(null);
when(mockNameShortenerService.abbreviateLastName(any))
.thenReturn('John D.');
when(
mockCaregiverService.getCaregiverStatus(
testLocal,
),
).thenReturn('Pending');
final result = viewModel.isCaregiverAssignedToPatient ||
viewModel.caregiverStatus != null &&
viewModel.caregiverStatus!.contains('Pending')
? 'Caregiver: ${mockNameShortenerService.abbreviateLastName(
mockCaregiverService.caregiverInvitation?.name ?? '',
)}'
: localizer.myAccountLandingScreen_inviteCaregiver;
expect(viewModel.caregiverStatus, isNotNull);
expect(viewModel.caregiverStatus, 'Pending');
expect(result, viewModel.manageCaregiverLabel);
});
});
这里只覆盖了这一行
caregiverStatus != null & & caregiverStatus!.contains('待定')
请帮我在 Mockito flutter 中也涵盖这一点。其他行显示已覆盖。但仅针对这一行,它没有被覆盖。
答:
2赞
B.M.Samiul Haque Real
11/17/2023
#1
在您提供的代码中,您似乎正在尝试根据 Dart 代码中的条件测试 manageCaregiverLabel 方法的行为。
测试特定行 caregiverStatus != null & & caregiverStatus!。contains('Pending'),您需要相应地设置模拟对象和期望。您可以使用 Mockito 中的 when 和 thenReturn 方法来控制模拟对象的行为。
下面是如何修改测试以涵盖特定行的示例:
test(
'manageCaregiverLabel returns correct value when caregiverStatus is Pending',
() {
// Set up your mock objects and expected values
when(mockUserService.relatedUserSummary).thenReturn(caregiverMockSummary);
when(mockCaregiverService.caregiverInvitation?.name).thenReturn(null);
when(mockNameShortenerService.abbreviateLastName(any)).thenReturn('John D.');
when(mockCaregiverService.getCaregiverStatus(testLocal)).thenReturn('Pending');
// Trigger the method under test
final result = viewModel.manageCaregiverLabel;
// Verify the expectations
verify(mockUserService.relatedUserSummary).called(1); // adjust the number as needed
verify(mockCaregiverService.caregiverInvitation?.name).called(1);
verify(mockNameShortenerService.abbreviateLastName(any)).called(1);
verify(mockCaregiverService.getCaregiverStatus(testLocal)).called(1);
// Add your assertions for the specific line
expect(viewModel.caregiverStatus, isNotNull);
expect(viewModel.caregiverStatus, 'Pending');
expect(
result,
'Caregiver: ${mockNameShortenerService.abbreviateLastName(mockCaregiverService.caregiverInvitation?.name ?? '')}',
);
},
);
评论
0赞
starball
11/21/2023
在撰写这篇回答文章时,您是否使用了任何生成式 AI?
评论