нужна помощь в понимании функции «когда», используемой в Mockito (для Flutter) - PullRequest
0 голосов
/ 13 апреля 2020

я учусь, используя 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');
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...