я учусь, используя Mockito в приложении Flutter.
Моя цель здесь - провести единичный модульный тест, который подтверждает, что требуемый класс («Пользователь») возвращается из поддельного вызова API.
Я следил за документами и некоторыми примерами и прошел рабочий тест. ОДНАКО - моя проблема в том, что я не понимаю цели when(..
? Глядя на код, мне кажется, что это всего лишь самоисполняющееся пророчество, поскольку вызов when(..
жестко закодирован для возврата объекта класса User
.
Итак, ммммм, разве этот тест ВСЕГДА не пройдет?
я знаю, что определенно неправильно понимаю что-то здесь и был бы признателен, если бы кто-то объяснил мне? (тогда у меня может быть момент "дух"; -)
example_test.dart
class MockAuthService extends Mock implements IAuthenticationService {}
class MockClient extends Mock implements http.Client {}
void main() {
setUpAll(() {});
test('fetchUser returns a valid User object', () async {
final client = MockClient();
var mockAuthService = MockAuthService();
when(mockAuthService.fetchUser(client)).thenAnswer((_) async => User(title: "Fred"));**
(====> what exactly is this "when" line of code doing ? <====)
var result = await mockAuthService.fetchUser(client);
expect(await mockAuthService.fetchUser(client), isNotNull);
expect(result.title, "Fred");
});
}
модель
class User {
final int userId;
final int id;
final String title;
final String body;
User({this.userId, this.id, this.title, this.body});
factory User.fromJson(Map<String, dynamic> json) {
return User(
userId: json['userId'],
id: json['id'],
title: json['title'],
body: json['body'],
);
}
}
authentication_service.dart
это функция, которую я хочу проверить:
Future<User> fetchUser(http.Client client) async {
final response =
await client.get('https://jsonplaceholder.typicode.com/posts/1');
if (response.statusCode == 200) {
return User.fromJson(json.decode(response.body));
} else {
throw Exception('Failed to create a User object');
}
}