我正在嘗試學習 Flutter 并堅持使用 Mockito 進行測驗。我正在嘗試將 Clean Architect 實施到 Flutter 教程https://docs.flutter.dev/get-started/codelab。我制作了一個名為的用例GetRandomWords和一個介面配接器,RandomWordsRepository如下所示:
abstract class RandomWordsRepository {
String get();
}
abstract class GetRandomWords {
String randomWords();
}
class GetRandomWordsImpl implements GetRandomWords {
final RandomWordsRepository repository;
GetRandomWordsImpl(this.repository);
@override
String randomWords() {
return repository.get();
}
}
我做了一個這樣的測驗用例:
import 'package:mockito/mockito.dart';
import 'package:tutorial/domain/interfaces/random_words_repository.dart';
import 'package:tutorial/domain/use_cases/get_random_words.dart';
class MockRandomWordsRepository extends Mock implements RandomWordsRepository {
}
@GenerateMocks([RandomWordsRepository])
void main() {
setUp(() {});
test("Should get random words from repository", () async {
final expectedRandomWords = "test_random_words";
final mockRepository = MockRandomWordsRepository();
final useCase = GetRandomWordsImpl(mockRepository);
when(mockRepository.get()).thenReturn(expectedRandomWords);
expect(useCase.randomWords(), expectedRandomWords);
verify(mockRepository.get());
});
}
但它回傳了這個錯誤:type 'Null' is not a subtype of type 'String'就行了when(mockRepository.get()).thenReturn(expectedRandomWords);。誰能告訴我這里出了什么問題?
謝謝。
uj5u.com熱心網友回復:
@GenerateMocks([RandomWordsRepository])將為您創建一個MockRandomWordsRepository類。你不應該自己定義它。您還需要運行dart run build_runner build以生成模擬,并且需要添加適當的import行以使用生成的檔案。
確保您嚴格README按照Mockito 的說明進行操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397958.html
