generate static method
Generates a complete unit test file for a service/repository/controller.
Implementation
static String generate({
required String className,
required String importPath,
required List<String> methods,
bool isTopLevel = false,
String? mockClassName,
String? mockImportPath,
}) {
final buffer = StringBuffer();
// Imports
buffer.writeln("import 'package:flutter_test/flutter_test.dart';");
if (mockImportPath != null) {
buffer.writeln("import 'package:mocktail/mocktail.dart';");
}
buffer.writeln("import '$importPath';");
buffer.writeln();
// Mock class (if applicable)
if (mockClassName != null) {
buffer.writeln(
'class Mock$mockClassName extends Mock implements $mockClassName {}');
buffer.writeln();
}
// Main
buffer.writeln('void main() {');
buffer.writeln(" group('$className', () {");
if (!isTopLevel) {
buffer.writeln(' late $className sut;');
buffer.writeln();
// setUp
buffer.writeln(' setUp(() {');
buffer.writeln(' sut = $className();');
buffer.writeln(' });');
buffer.writeln();
// Test: initialization
buffer.writeln(" test('should be instantiated', () {");
buffer.writeln(' expect(sut, isNotNull);');
buffer.writeln(' });');
}
// Test stubs for each method
for (final method in methods) {
buffer.writeln();
buffer.writeln(" test('$method works correctly', () {");
buffer.writeln(' // TODO: Arrange');
buffer.writeln();
buffer.writeln(' // TODO: Act');
if (isTopLevel) {
buffer.writeln(' // final result = $method();');
} else {
buffer.writeln(' // final result = sut.$method();');
}
buffer.writeln();
buffer.writeln(' // TODO: Assert');
buffer.writeln(' // expect(result, expectedValue);');
buffer.writeln(' });');
}
buffer.writeln(' });');
buffer.writeln('}');
return buffer.toString();
}