Loading...
Loading...
Ensure code correctness with comprehensive unit and integration tests.
npx skill4agent add dart-lang/skills dart-testingpackage:testpackage:mockitodart testflutter testpubspec.yamlsdk: flutterflutter_testflutter testpackage:testdart testpackage:mockitoflutter_testflutter_driverintegration_testpubspec.yamldev_dependenciesdev_dependencies:
test: ^1.24.0 # Use flutter_test for Flutter projects
mockito: ^5.4.4
build_runner: ^2.4.8@GenerateMocksimport 'package:mockito/annotations.dart';
import 'package:my_app/api_client.dart';
([ApiClient])
void main() {}dart run build_runner build --delete-conflicting-outputsbuild_runnertestexpect()import 'package:test/test.dart';
import 'package:mockito/mockito.dart';
import 'package:my_app/data_service.dart';
import 'api_client.mocks.dart'; // Generated mock file
void main() {
group('DataService -', () {
late DataService dataService;
late MockApiClient mockApiClient;
setUp(() {
mockApiClient = MockApiClient();
dataService = DataService(apiClient: mockApiClient);
});
test('fetchData returns parsed data on successful API call', () async {
// Arrange
when(mockApiClient.get('/data')).thenAnswer((_) async => '{"status": "ok"}');
// Act
final result = await dataService.fetchData();
// Assert
expect(result, equals({'status': 'ok'}));
verify(mockApiClient.get('/data')).called(1);
});
test('fetchData throws Exception on API failure', () async {
// Arrange
when(mockApiClient.get('/data')).thenThrow(Exception('Network Error'));
// Act & Assert
expect(
() => dataService.fetchData(),
throwsA(isA<Exception>()),
);
});
});
}# For pure Dart projects
dart test test/data_service_test.dart
# For Flutter projects
flutter test test/data_service_test.dartname: Dart CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- run: dart testtestgrouptestexpect()completionthrowsAisAdart testflutter testpackage:mockitodart-static-analysisdart-code-generation