Избегайте тестирования с помощью моков
Моки отражают вашу реализацию
Лучшие тесты не отражают вашу реализацию.
Они позволяют рефакторить код, не задумываясь о том, как они работают.
Вы тестируете то, что они возвращают, а не как они это делают.
Таким образом, вы можете рефакторить код, пока они продолжают работать.
Наш тест не знает ничего о том, как мы используем
👋 Прощай, mockito!
Оцените новую рубрику и напишите своё мнение! 👍
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #TestingTips #CodingBestPractices
Моки отражают вашу реализацию
Лучшие тесты не отражают вашу реализацию.
Они позволяют рефакторить код, не задумываясь о том, как они работают.
Вы тестируете то, что они возвращают, а не как они это делают.
Таким образом, вы можете рефакторить код, пока они продолжают работать.
test('on receive message, should dispatch as a notification', () async {
final repository = AppNotificationsRepository(
notificationsApi: fakeNotificationsApi,
notificationPublisher: dispatcher,
);
Notification? receivedNotification;
dispatcher.subscribe((notification) => receivedNotification = notification);
fakeNotificationsApi.sendForegroundMessage(
const RemoteMessage(
data: {
'title': 'title',
'body': 'example body',
},
),
);
await Future.delayed(const Duration(milliseconds: 100));
expect(receivedNotification, isNotNull);
expect(receivedNotification!.title, 'title');
expect(receivedNotification!.body, 'example body');
});
class FakeNotificationsApi implements NotificationsApi {
OnRemoteMessage? _foregroundHandler;
@override
void setForegroundHandler(OnRemoteMessage handler) {
_foregroundHandler = handler;
}
void sendForegroundMessage(RemoteMessage message) {
_foregroundHandler?.call(message);
}
}
Наш тест не знает ничего о том, как мы используем
NotificationsApi
.Mockito
заставил бы нас имитировать каждый метод и проверять, как мы их используем.👋 Прощай, mockito!
Оцените новую рубрику и напишите своё мнение! 👍
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #TestingTips #CodingBestPractices
💯1