颤振试验中的非零变量



大约一年前我还在学习扑动,现在我休息后回来了,但我遇到了一个问题,这可能很简单,但我真的不理解。

我正在学习Flutter Clean Architecture的教程,当我写第一个测试时,我有一个错误说"必须先分配不可为null的本地变量"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
});
}

***之间的部分出现错误,此符号出现在测试功能中的方法之后

编译器不能真正理解您稍后正在初始化值。要告诉它您承诺在使用变量之前这样做,请在类型之前添加late关键字。

示例:

// compiles successfully and prints 'abc'
void main() {
late String foo;

(){
foo = 'abc';
}();
print(foo);
}

在你的情况下,它将是

late MockNumberTriviaRepository mockNumberTriviaRepository;

在void main的顶部,将mockNumberTriviaRepository初始化为

MockNumberTriviaRepository mockNumberTriviaRepository= MockNumberTriviaRepository();

class MockNumberTriviaRepository extends Mock
implements NumberTriviaRepository {}
void main() {
GetConcreteNumberTrivia usecase;
MockNumberTriviaRepository 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
});
}

或使用后期关键字

late MockNumberTriviaRepository mockNumberTriviaRepository;

最新更新