Skip to content

Instantly share code, notes, and snippets.

@ulisseshen
Created May 30, 2023 22:51
Show Gist options
  • Save ulisseshen/1933556ec2ea68d3a5fc4a137daf0286 to your computer and use it in GitHub Desktop.
Save ulisseshen/1933556ec2ea68d3a5fc4a137daf0286 to your computer and use it in GitHub Desktop.
Spy - Um spy é um test double usado para inspecionar a saída produzida pelo sistema em teste.
// Interface do LayoutManager
abstract class LayoutManager {
void paintDarkMode();
void paintLightMode();
}
// Implementação Dummy do LayoutManager
class LayoutManagerDummy implements LayoutManager {
@override
void paintDarkMode() {
// Não faz nada
}
@override
void paintLightMode() {
// Não faz nada
}
}
abstract class SettingsStorage {
void setDarkModeEnabled(bool enabled);
}
class SettingsController {
final LayoutManager layoutManager;
final SettingsStorage settingsStorage;
SettingsController({
required this.layoutManager,
required this.settingsStorage,
});
void setDarkModeEnabled(bool enabled) {
if (enabled) {
layoutManager.paintDarkMode();
} else {
layoutManager.paintLightMode();
}
settingsStorage.setDarkModeEnabled(enabled);
}
}
class SettingsStorageSpy implements SettingsStorage {
bool? darkModeEnabled;
@override
void setDarkModeEnabled(bool enabled) {
darkModeEnabled = enabled;
}
}
void main() {
final layoutManager = LayoutManagerDummy();
final settingsStorageSpy = SettingsStorageSpy();
final settingsController = SettingsController(
layoutManager: layoutManager,
settingsStorage: settingsStorageSpy,
);
settingsController.setDarkModeEnabled(true);
print(settingsStorageSpy.darkModeEnabled);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment