大约一年前我正在学习颤振,现在休息后我回来了,但我解决了一个问题,这可能很简单,但我真的不明白。
我正在学习 Flutter Clean Architecture 的教程,当我编写我的第一个测试时,我有一个错误说 “不可为空的局部变量 'mockNumberTriviaRepository' 必须在使用前赋值。” 我不知道怎么写才能成为正确的代码。
我的代码如下:
class MockNumberTriviaRepository extends Mock
implements NumberTriviaRepository {}
void main() {
GetConcreteNumberTrivia usecase;
MockNumberTriviaRepository mockNumberTriviaRepository;
setUp(() {
MockNumberTriviaRepository mockNumberTriviaRepository = MockNumberTriviaRepository();
usecase = GetConcreteNumberTrivia(mockNumberTriviaRepository);
});
final tNumber = 1;
final tNumberTrivia = NumberTrivia(number: 1, text: 'test');
test('schould get trivia for the number from the repository', () async {
// arrange
when(**mockNumberTriviaRepository**.getConcreteNumberTrivia(1)).thenAnswer((_) async => Right(tNumberTrivia));
// act
// assert
});
}
错误出现在测试函数中的when方法之后的** ** this标志之间
答案 0 :(得分:1)
编译器无法真正理解您稍后初始化该值。要告诉它您承诺在使用变量之前这样做,请在类型前添加 late
关键字。
示例:
// compiles successfully and prints 'abc'
void main() {
late String foo;
(){
foo = 'abc';
}();
print(foo);
}
在你的情况下是
late MockNumberTriviaRepository mockNumberTriviaRepository;