Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.8.2

mock_exceptions

Bietet eine Möglichkeit, bei bestimmten Aufrufen Ausnahmen zu werfen. Dies ist nützlich, wenn man mit einem Fake arbeitet und dennoch gelegentlich Ausnahmen auslösen möchte.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
353.000
Likes
5
Pub-Punkte
150

Paket installieren

flutter pub add mock_exceptions

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Das mock_exceptions-Paket ermöglicht Entwicklern die Simulation von Ausnahmeverhalten in Mock-Objekten während des Testens. Es erlaubt spezifische Methodenaufrufe an einem Fake oder Mock, Ausnahmen zu werfen, was besonders nützlich ist, um Fehlerbehandlungsszenarien zu testen, ohne auf echte Implementierungen angewiesen zu sein. Dadurch wird die Robustheit der Testfälle sichergestellt, indem überprüft wird, wie der Code auf Fehler reagiert. Das Paket integriert sich nahtlos in das Testing-Ökosystem von Flutter und unterstützt alle wichtigen Plattformen. Es ist ideal für Unit- und Integrations-Tests, bei denen kontrollierte Fehlerbedingungen erforderlich sind.

Anwendungsfälle

  • Testen von Fehlerbehandlungs-Pfaden
  • Simulieren fehlgeschlagener API-Antworten
  • Wiederholungslogik überprüfen
  • Sicherstellen einer anständigen Degradation
  • Ausnahmefehlerbehebung testen
  • Nachahmung in konsistenter Verhaltensweise

Hauptmerkmale

  • Einfache Ausnahmeeinbettung
  • Unterstützt alle Flutter-Plattformen
  • Integration mit Fake-Klassen
  • Minimale Einrichtung erforderlich
  • Flexible Ausnahmekonfiguration
  • Kompatibel mit bestehenden Test-Frameworks

Geeignet für

  • Einheitstester
  • Integrationstester
  • Entwickler, die widerstandsfähigen Code schreiben
  • Teams, die TDD/BDD verwenden
  • Benutzer, die realistische Fehler-Szenarien benötigen
  • Testgetriebene Entwicklung Arbeitsabläufe

Hinweise

  • Erfordert Verständnis von Mock-Konzepten
  • Nicht für den Produktiveinsatz vorgesehen
  • Hängt von der korrekten Teststruktur ab
  • Kann die Testkomplexität erhöhen, wenn sie übermäßig verwendet wird
  • Am besten zusammen mit anderen Testhilfsmitteln verwendet
  • Nur auf Ausnahme-Simulation beschränkt

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

mock_exceptions

pub package Dart

Provides a mechanism to throw exceptions on certain calls. This is useful when working with a Fake and we still want to occasionally make it throw exceptions. At a glance:

final f = MyFake();
whenCalling(Invocation.method(#doSomething, null))
    .on(f)
    .thenThrow(Exception());
expect(() => f.doSomething(), throwsException);

Features

  • supports mocking exceptions for methods, getters, setters.
  • supports matching on positional parameters, named parameters and type parameters (generics).
  • supports regular matchers.
  • supports omitting parameters when matching with anything.

For exhaustive usage, see our unit tests.

Differences with Mockito

Mockito lets you mock and stub methods. That means it lets you return predefined responses and throw exceptions, but not act as closely to the real thing as a Fake. Since mock_exceptions is supposed to be used on Fakes, its API unambiguously lets you mock only exceptions.

Usage

  1. In your Fake method/getter/setter implementation, add maybeThrowException at the beginning.
  2. In your unit test, set up an expectation, then verify your expectations as usual.
Before

Your Fake method might look like this. It does some real work.

class MyFake {
  String doSomething(String input) {
    return 'it works';
  }
}

Your unit test might even check that it works.

final fake = MyFake();
expect(fake.doSomething('yes'), 'it works');
After

Your Fake method checks for possible exceptions before doing the work.

class MyFake {
  String doSomething(String input) {
    maybeThrowException(this, Invocation.method(#doSomething, [input]));
    return 'it works';
  }
}

You can now forcefully throw exceptions and test for them.

final fake = MyFake();
whenCalling(Invocation.method(#doSomething, ['fun']))
    .on(fake)
    .thenThrow(Exception());
expect(() => fake.doSomething('fun'), throwsException);

Design considerations

  • whenCalling(Invocation.method(#doSomething, [equals('fun')])).on(fake).thenThrow(Exception()); is too verbose. Why not reimplement Mockito's API so that I can write when(fake.doSomething('fun')).thenThrow(Exception())?
    • Implementing Mockito's API requires relying on the noSuchMethod trick to detect the Invocation. As of writing, Mockito's mock.dart takes 1200 lines of code while our mock_exceptions.dart takes around 80. Even if we pare Mockito's down to the minimum (excluding verifications, captures), it'd still take around 500 lines of code.
    • It also forces the Fakes to extend a pre-defined class, Mock in Mockito's case. In some projects such as Fake Cloud Firestore (example), we actually need to extend another class.
  • The Mockito API has its own downsides and gotchas. See how one should use named arguments here. Also you need to use its wrappers around the regular Matchers, such as any instead of anything, and argThat(matcher).

Kategorien

Abhängigkeiten

Abhängigkeiten 1 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden